URLs automatisch verlinken

Die Aufgabe klingt trivial: Evtl. in einem Textblock vorhandene URLs sollen per php erkannt und automatisch verlinkt werden. Eigentlich wollte ich das Rad nicht neu erfinden – aber ich habe jedoch keine brauchbare Lösung gefunden und daher einen Igel bemüht, den ich in solchen Fällen gerne über die Tastatur abrolle:

[php]
// zunächst fehlende Protokollprefixe ergänzen
$text = str_replace(‘ www.’,’ http://www.’,$text);
$pattern = ‘#([^\”=>]|(?:r />))(http://)([^\s<>,]+(?=\.\s)|[^\s<>,]+)([\s\n<>,\.])#sm’;
$replacement = “$1$2$3$4″;
$text = preg_replace($pattern,$replacement,$text);
[/php]

Dieser Code ist hier im Einsatz und dort werden auch einige Fallbeispiele aufgezeigt. Das ganze klappt zwar soweit ganz ordentlich, aber irgendwie müsste man das doch eleganter lösen können, oder?!? Es sei als Surftipp der RegExp-Evaluator empfohlen.

Mächtig für die Shell ist SED. Hier ein Demo zum konvertieren von relativen URLs zu absoluten URL:
[code]
sed -i -r “s/(href|src)=\”\//\1=\”http:\/\/www.mysite.com\//g” /path/myfiles*
[/code]

4 comments Write a comment

  1. Pingback: Lars-Schenk.com » Reguläre Ausdrücke - kurz und bündig

  2. Genau so etwas habe ich gesucht und da ich in php nicht so fit bin, habe ich das weitgehend übernommen. Vielen Dank.
    Leider funktionieren urls die am Ende des Textes stehen und nicht durch einen Punkt geschlossen werden nicht. Dann schneidet er sie beim letzten Punkt in der url ab. Verstehe ich nicht, aber ich versuche es. Muss mir echt mal php drauf schaffen, aber irgendwie fehlt mir die Zeit.