Jak zamienić wszystkie linki w tek¶cie na aktywne ?
Czyli chcemy aby każde http://www.programuj.com zamieniło się na http://www.programuj.com a mail@example.com na mail@exaple.com.
Nie zaszkodziło by wzi±¶ć również pod uwagę https:// news:// czy ftp://. Posłuż± nam do tego wyrażenia regularne i funkcja preg_replace. Najpierw gotowy kod do
zamiany wszystkich urli:
<?
$tekst = preg_replace("/(http|https|ftp|news)(:\/\/[[:alnum:]Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż@#%\&_=?\/\.-]+)/","<a href='\\1\\2'>\\1\\2</a>",$tekst);
?>
|
I do zamiany e-maili:
<?
$tekst = preg_replace("/([[:alnum:]_\.:-]+@[[:alnum:]Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż_\.:-]+)/i","<a href='mailto:\\1'>\\1</a>",$tekst);
?>
|
Funkcje rozróżniaj± również pliterki w domenach, które niedawno zostały wprowadzone w Polsce. Podsumowuj±c, wynikiem działania takiego kodu:
<?
$tekst = 'Jaki¶ tekst z adresem http://www.programuj.com emailem jakis@example.com a nawet domen± http://się.pl i linkiem do ftp://slackware.com';
$tekst = preg_replace("/(http|https|ftp|news)(:\/\/[[:alnum:]Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż@#%\&_=?\/\.-]+)/","<a href='\\1\\2'>\\1\\2</a>",$tekst);
$tekst = preg_replace("/([[:alnum:]_\.:-]+@[[:alnum:]Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż_\.:-]+)/i","<a href='mailto:\\1'>\\1</a>",$tekst);
echo $tekst;
?>
|
Będzie:
I nie przejmuj się jeżeli nie rozumiesz wszystkiego ;) Podziękowania dla Hassana, bo to na jego autorstwa wyrażeniach regularnych się oparłem.
|