Die folgenden Funktionen helfen euch mit Hilfe von regulären Ausdrücken einen normalen String auf URLs zu durchsuchen und diese klickbar zu machen.
Hier ein einfach nachvollziehbares Beispiel um URLs mit Protokoll http zu ersetzen:
url-in-text-hervorheben.php
<?php
$string = 'ich bin eine http://domain.tld - und du?';
$pattern = '/(http:\/\/[^ ]+)/i';
$replacement = '<a href="$1">$1</a>';
?>
Komplexeres Beispiel:
url-in-text-hervorheben.php
function make_clickable($text) {
// mit leerzeichen nach rechts ruecken
$ret = ' '.$text;
// matcht protokolle http:// oder ftp:// oder skype://
$ret =
preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is",
"\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",
$ret);
// matcht urls die mit www oder ftp beginnen
$ret =
preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is",
"\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>",
$ret);
// matcht email adressen
$ret =
preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
"\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>",
$ret);
// entfernt unsere einrueckung wieder
return($ret);
}
$string = 'ich bin eine www.domain.tld - und du?';
echo make_clickable
($string);