[php] wykrywanie url'a w stringu

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
misz
Przelotem
Przelotem
Posty: 380
Rejestracja: śr lip 10, 2002 10:38 pm
Lokalizacja: wawa
Kontakt:

[php] wykrywanie url'a w stringu

Post autor: misz »

potrzeba mi skrypt ktory znajdzie w stringu url'e i zamieni je na linki
np string: jakis tekst http://dva.pl jakis tekst
na: jakis tekst <h href="http://dva.pl">dva.pl</a> jakis tekst
z tym ze chcialbym zeby wykrywal tez adresy bez "http://" i maile. zabieram sie do tego jak do jeza od tygodnia i jakos nie moge wpasc na rozwiazanie a widzialem gdzies funkcje. moze ktos widzial rozwiazanie, ewetualnie podzieli sie swoim.
Mayhen
Nowy
Nowy
Posty: 158
Rejestracja: śr lip 10, 2002 9:21 pm
Lokalizacja: 21°41' E | 50°35' N
Kontakt:

Re: [php] wykrywanie url'a w stringu

Post autor: Mayhen »

spróboj z tym:
[php]
<?
$content = "np string: jakis tekst http://dva.pl jakis tekst na: jakis tekst http://dva.pl jakis tekst";

$content = preg_replace("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $content );
$content = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $content );
$content = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $content );

print $content ;
?>
[/php]
co da:

Kod: Zaznacz cały

np string: jakis tekst <a href="http://dva.pl" target="_blank">http://dva.pl</a> jakis tekst 
na: jakis tekst <a href="http://dva.pl" target="_blank">http://dva.pl</a> jakis tekst
UPDATE:
jeśli chcesz mieć adresy napisane bez http:// miedzy <a> a </a> to pierwsza zmiana wyglada tak:
[php]$content = preg_replace("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\3</a>", $content);[/php]
w drugiej bez 'www':
[php]$content = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">\\2.\\3\\4</a>", $content);
[/php]
Ostatnio zmieniony ndz lis 16, 2003 4:07 pm przez Mayhen, łącznie zmieniany 1 raz.
misz
Przelotem
Przelotem
Posty: 380
Rejestracja: śr lip 10, 2002 10:38 pm
Lokalizacja: wawa
Kontakt:

Re: [php] wykrywanie url'a w stringu

Post autor: misz »

wielkie dzieki :D
Mayhen
Nowy
Nowy
Posty: 158
Rejestracja: śr lip 10, 2002 9:21 pm
Lokalizacja: 21°41' E | 50°35' N
Kontakt:

Re: [php] wykrywanie url'a w stringu

Post autor: Mayhen »

dodałem update dzieki ktoremu tekst pozbawiony jest 'http://' - ale linki nadal działają.
ODPOWIEDZ