jak převést textové odkazy na aktivní?
5 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Potřebuji v textu příspěvku převést všechna odkazy a emaily na aktivní adresy. Vytvořil jsem si funkci (za pomocí tohoto fóra) a nefunguje: function odkazy($text) { global $export; $export = preg_replace("/(http:\/\/[_|-|A-Za-z0-9|]+[.]+[A-Za-z]{2,4}[-_~%#&=?.a-z0-9\/]*)/i", "<a href=\"\\1\">\\1</a>", $text); $export = preg_replace("/(\s)(www.[_|-|A-Za-z0-9|]+[.]+[A-Za-z]{2,4}[-_~%#&=?.a-z0-9\/]*)/i", "\\1<a href=\"http://\\2\">\\2</a>",$text); $export = preg_replace("/mailto:([_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})/i","<a href=\"mailto:\\1\">\\1</a>",$text); return $export; } počítám, že dál zadám jen $text = odkazy($text); kde je, prosím, chyba? Díky za odpověď...
-
ještě bych měl uvést, že tomu preg_replace moc nerozumím - zkopíroval jsem to...
-
to vypada spis jako str_replace....
-
$text = .... $text = .... $text = .... return $text
-
tak už to mám (našel jsem to na php.cz :-)) function odkazy($Text) { // First match things beginning with http:// (or other protocols) $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $Protocol = '(http|ftp|https):\/\/'; $Domain = '[\w]+(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $Protocol . $Domain . $Subdir . '/i'; $Result = preg_replace( $Expr, "<a href=\"$0\" title=\"$0\" target=\"_blank\">$0</a>", $Text ); // Now match things beginning with www. $NotAnchor = '(?<!"|href=|href\s=\s|href=\s|href\s=)'; $NotHTTP = '(?<!:\/\/)'; $Domain = 'www(.[\w]+)'; $Subdir = '([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?'; $Expr = '/' . $NotAnchor . $NotHTTP . $Domain . $Subdir . '/i'; return preg_replace( $Expr, "<a href=\"http://$0\" title=\"http://$0\" target=\"_blank\">$0</a>", $Result ); }