Links automatisch ersetzen

BF1942 Freak

Cadet 4th Year
Registriert
Mai 2005
Beiträge
73
wie ist es möglich, dass links in einen normalen text automatisch zu html-links werden?

ich habe mir folgendes überlegt:
HTML:
$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.
 
also meine idee wäre eine andere, nämlich du suchst nach dem Vorkommen von "http://" in einem string schneidest alles davor ab, dann fragst du immer bis zum Nächsten Leerzeichen, das nächste Zeichen des strings ab und schneidest dahinter alles weg.
Dann baust du vor und hinter deinen übriggebliebenen Stringschnippsel die html tags ein und fügst das zuvor Weggeschnittene dann wieder davor und dahinter an....
 
PHP kann ich grade nicht testen, aber in Perl würdest du sowas machen:
Code:
$text =~ s#((((http(s)|ftp)://)|www\.).+?)(?=\s)#<a href="$1">$1</a>#gs;

Übersetzung:
Suche eine Zeichenkette, die wie folgt beginnt:
http gefolgt von :// oder
https gefolgt von :// oder
ftp gefolgt von :// oder
www. ohne folgendes ://
suche weiter bis zum ersten whitespace character und füge alles vor diesem der Zeichenkette hinzu.
Ersetze die Zeichenkette durch <a href="Zeichenkette">Zeichenkette</a>.
 
Du hattest es fast richtig. du musst nur das [^ ] durch \S ersetzen. \S steht für alle zeichen außer whitespaces.

PHP:
$text  = preg_replace('#((?:http://|https://|ftp://|www.)\S+)#', '<a href="$1">$1</a>', $text);
 
Zurück
Oben