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]
Pingback: Lars-Schenk.com » Reguläre Ausdrücke - kurz und bündig
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.
Hallo Lars,
danke für deinen publizierten Ansatz, der auf meiner Website seit gestern probehalber für die Twitter-Meldungen zum Einsatz kommt:
http://www.thomas-liebscher.eu/
Leider werden die verlinkten URLs manchmal ohne erkennbaren Grund zum Teil abgeschnitten.
Gruß
Die Lösung habe ich hier gefunden:
http://forum.zockerade.com/ereg-replace-preg-replace-und-str-replace-t-403.html
Der folgende Codeschnipsel verlinkt die URLs in einem Text ebenfalls automatisch:
$v = eregi_replace(“([[:alpha:]]+://[^[:space:]]+[[:alnum:]/])”,”\“, $v);
Der Autor dort gibt zu: “hatte ich damals auch nur abgetippt, ohne genaueres zu verstehen…”
Gruß aus Düsseldorf