Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykrywanie linków
Forum PHP.pl > Forum > PHP
Shinji
Witam,
mam kolejny problem niestety....

staram się napisac skrypt, ktory w danym ciagu wykrywałby adresy/linki z uwzglednieniem zapisu (www.google.pl ,http://google.pl i http://www.google.pl) i zamieniał je na [ LINK ] ktory byłby odnosnikiem do ów strony. Czytałem o kilku funkcjach preg_match, preg_match_all, ereg, ale nie wychodzi mi to, zapewne nie umiejetnie ich uzywam - tym bardziej, że nie dokońca pojmuje wyrażenia regularne. Z góry dziekuje =)
Shinji
Dzieki, ale doszłem już do tego, ale od tego czasu walcze z nastepnym problemem...
chce, aby z ciagu danego wszytskie ':/' zamienił na <img src=krzywy.gif> no i to nie problem (i to nie problem dzieki funkcji str_replace), ale jak zrobić by omijał link - bo niestety http://google.pl zamienia sie na http<img src=krzywy.gif>/google.pl =/ Próbowałem zrobić to właśnie preg_replace, ale nie umiem skonstruowac odpowiedniej funkcji. Jakieś pomysły?
erix
Kod
'#[^http]\:/#i'

Domyśl się, gdzie to wstawić.

ps:
Cytat
Dzieki, ale doszłem już do tego

http://sjp.pwn.pl/lista.php?co=dosz%B3em co to jest? :|
Shinji
*doszedłem - sorki za błąd wstydnis.gif
no i jeszcze raz dzieki za pomoc,
owszem domyślam sie gdzie to wstawić, bo podobne wyrażenie napisałem sam, i w obach przypadkach nie sprawuje się gdy od emoty nie ma przerwy od ostatniego slowa, a slowo konczy sie na h,t,p.
erix
Cytat
owszem domyślam sie gdzie to wstawić, bo podobne wyrażenie napisałem sam, i w obach przypadkach nie sprawuje się gdy od emoty nie ma przerwy od ostatniego slowa, a slowo konczy sie na h,t,p.

Najpierw zamieniaj adresy, potem emoty, ale już nie przez str_replace" title="Zobacz w manualu PHP" target="_manual, tylko przez wyrażenia regularne i w taki sposób, jak pokazałem.
Shinji
dzieki za wszytskie podpowiedzi, ale..
gdy wpisze np 'pppp :/' jest okey, gdy wpisze 'mmm:/' też jest okey, ale gdy juz wpisze 'pppp:/' (bez spacji po słowie) emot nie zostaje zamieniony, w sumie nie wiem czemu, ale tak sie dzieje....
erix
Bo nawias kwadratowy określa klasę znaków, które nie mogą wystąpić przed emotką. Pomęcz się trochę z wzorcem. winksmiley.jpg
Shinji
no własnie wiem, ze okreslaja znaki, i mecze sie mecze i nie umiem rozwiazać tego... bo z tego co mi wiadomo nie istnieje negacja tzn. 'atomu'...
erix
Kod
'#(?<!http)\:/#i'
Shinji
No to teraz mnie zgiołeś! Tego nie znałem... Wielkie, ale to wielkie dzieki =)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.