URL automatisch in klickbaren link umwandelnIn Gästebüchern, Foren oder Blogs kann es sinnvoll sein, die von den Benutzern eingebenen Webadressen bei Veröffentlichung des Beitrags automatisch in eine klickbare URL umzuwandeln. Das geht recht unkompliziert mit einem kleinen PHP-Schnipsel. Dieses soll hier vorgestellt werden.

Text automatisch in Links umwandeln

Zunächst müssen nach einem bestimmten Muster jene Textpassagen extrahiert werden, die auch eindeutig ein Link sind, damit später aus www.nachgeschlaut.de www.nachgeschlaut.de wird. Links fangen in der Regel mit www., http:// oder mit http://www. an. Das ist ein eindeutiges Erkennungsmerkmal und dies macht man sich zu Nutze. Die Variable $htmlText beinhaltet einen beliebigen Text, in dem Links vorkommen können und wird überprüft:

$htmlText = str_replace("http://www.","www.",$htmlText);
$htmlText = str_replace("http://","www.",$htmlText);
$htmlText = str_replace("www.","http://www.",$htmlText);

Was passiert hier? Zunächst wird mit Hilfe von str_replace im Text nach http://www. und http:// gesucht und durch www. ersetzt. In der zweiten Zeile wird nach www. gesucht und durch http://www. ausgetauscht. Ist das nicht doppeltgemoppelt? Nein. Dieser Schritt ist sogar wichtig, denn so werden auch die www.-Links erkannt, die sonst nicht umgewandelt werden würden.

Jetzt kommt der entscheidende Schritt:

$htmlText = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@\+\_%()]+
[\w-?&;#~=\.\/\@\+\_%()])/i","$1", $htmlText);

Hier wird nun der Link in eine klickbare URL umgewandelt. Wem das jetzt kompliziert erscheint, der sollte sich eingehender mit preg_replace beschäftigen. Wer nicht möchte, dass sich der Link in einem neuen Fenster öffnet, der muss nur das target=\"_blank\" aus der Zeile entfernen.

Emailadressen in Link umwandeln

Optional kann man auch Emailadressen automatisch erkennen und umwandeln, indem man noch folgende Zeile hinzufügt:

$htmlText = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+
\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","$1",$htmlText);

Nun einfach den Text wie gewünscht weiter bearbeiten oder ausgeben:

echo $htmlText;

Hier noch einmal das komplette Skript in PHP

$htmlText = str_replace("http://www.","www.",$htmlText);
$htmlText = str_replace("http://","www.",$htmlText);
$htmlText = str_replace("www.","http://www.",$htmlText);

$htmlText = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@\+\_%()]+
[\w-?&;#~=\.\/\@\+\_%()])/i","$1", $htmlText);

echo $htmlText;

$htmlText = str_replace("http://www.","www.",$htmlText);

Es empfiehlt sich, den Schnipsel in eine Funktion zu packen und entsprechend auszulagern.

Bitte erst anmelden um zu kommentieren.

Hinterfragt

Spam-Pranger

Dieser Mist nervt jeden! Hier sind die verrücktesten und derbsten Spam-Nachrichten. Ansehen...