Links automatisch ersetzen
Christopher
- php
0 Samuel Vogel0 seth
wie ist es möglich, dass links in einen normalen text automatisch zu html-links werden?
ich habe mir folgendes überlegt:
$text = preg_replace('#((?:http://|https://|ftp://|www.)[^ ]+)#', '<a href="$1">$1</a>', $text);
also wenn im text http://irgendeinlink, https://link oder ftp://link drin vorkommt, dann soll daraus ein HTML-LINK werden. aber so funktioniert das ja nicht, denn dann macht er den link vom ersten http:// bis zum ende des textes.
Google ist dein Freund!!!!
Aber ich will mal nicht so sein ;) :
function linker($link)
{
$link = str_replace("http://www.","www.",$link);
$link = str_replace("www.","http://www.",$link);
$link = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\">$1</a>", $link);
$link = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$link);
return $link;
}
so long,
Samy
gudn tach!
$link = preg_replace("/([\w]+://[\w-?&;#~=./@]+[\w/])/i","<a href="$1">$1</a>", $link);
und unter beruecksichtung, dass man regexps auch anders schreiben kann, waere der regexp dasselbe wie
'%\w+://[\w-?&;#~=./@]+[\w/]%i'
(und dann $0 statt $1)
$link = preg_replace("/([\w-?&;#~=./]+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?))/i","<a href="mailto:$1">$1</a>",$link);
und hier:
'%[\w-?&;#~=./]+@[?[a-z0-9.-]+.(?:[a-z]{2,3}|[0-9]{1,3})]?%i'
(und dann $0 statt $1)
aber gut wird's dadurch immer noch nicht. urls duerfen bspw. auch '%' und '_' enthalten und tlds koennen auch mehr als 3 zeichen enthalten...
prost
seth