Ich habe folgenden Code zusammengeschustert, um aus bbCode Links zu machen:
Code:
$result = preg_replace( "/\[URL=(.*?)\](.*?)\[\/URL\]/is",
"<a href=\"$1\" target=\"_blank\">$2</a>",
$result);
$result = preg_replace( "/\[URL\](.*?)\[\/URL\]/si",
"<a href=\"$1\" target=\"_blank\">$1</a>",
$result);
Das klappt so schon recht gut, bis auf die Tatsache, das man immer http:// mit angeben muss.
Ich denke die Problematik ist alt und bekannt.
Mein Lösungsansatz sah so aus, das ich vor dem oben genannten folgendes eingefügt habe:
Code:
$result = preg_replace( "/\[URL=((?\<!http\:\/\/)(.*?))\](.*?)\[\/URL\]/is",
"<a href=\"http://$1\" target=\"_blank\">$2</a>",
$result);
$result = preg_replace( "/\[URL\]((?<!http\:\/\/)(.*?))\[\/URL\]/si",
"<a href=\"$1\" target=\"_blank\">$1</a>",
$result);
Soweit meine Gedanken, alledings scheitert dieser Versuch, genauwie alle meine anderen Versuche, daran, das entweder die http:// doppelt angezeigt werden, wenns schon da war, oder garnet kommn.
Daher bitte ich um eure Hilfe.
Vielen Dank,
Thorsten Lanfer
/e: Das Forum frisst meine komplette Escaping-Klamüserei

/e²: Genauso wie es auch die erste Zeile meines Lösungsansatzes frisst, man stelle sie sich analog zur zweiten vor
EDIT:
der Code Tag frisst nichts!