Hi,
ich versuche mit hilfe von Regulären Ausdrücken angaben wie z.b
in normales HTML umzuwandeln. Dafür benutze ich folgende Funktion:
Wenn ich das einzeln teste funktioniert das auch, nur wenn ich mehrere URL`s in einem String umwandeln möchte dann führt das immer zu einer falschen Ausgabe.
Siehe hier: Klick
Die ersten 3 URL`s welche so ausgegeben werden:
klappen ja, nur die 4te welche so ausgegeben werden soll:
wird nicht mehr korrekt ausgegeben.
Woran kann das liegen?
ich versuche mit hilfe von Regulären Ausdrücken angaben wie z.b
Code:
[url=http://www.google.de]google[/url]
PHP-Code:
function parseBBCode($value)
{
$value = preg_replace('/\[b\](.*?)\[\/b\]/', '<b>$1</b>', $value);
$value = preg_replace('/\[i\](.*?)\[\/i\]/', '<i>$1</i>', $value);
$value = preg_replace('/\[color=([[:alnum:]]{6}?).*\](.*?)\[\/color\]/',
'<font color="#$1">$2</font>', $value);
$value = preg_replace('/\[url=(www[^ ]+).*\](.*?)\[\/url\]/',
'<a href="http://$1">$2</a>', $value);
$value = preg_replace('/\[url=([^ ]+).*\](.*?)\[\/url\]/',
'<a href="$1">$2</a>', $value);
$value = preg_replace('/\[url\](.*?)\[\/url\]/',
'<a href="$1">$1</a>', $value);
return $value;
}
Siehe hier: Klick
Die ersten 3 URL`s welche so ausgegeben werden:
PHP-Code:
$text = "[url=http://www.test.de]test[/url] <br /><br />";
echo parseBBCode($text);
$text2 = "[url=http://www.test.de]test.de - Stiftung Warentest[/url] <br /><br />";
echo parseBBCode($text2);
$text3 = "[url=www.test.de]test2[/url] <br /><br />";
echo parseBBCode($text3);
PHP-Code:
$text4 = "[url=http://www.test.de]test[/url] <br \> [url=www.test.de]test2[/url]
<br /> [url=http://www.test.de]test.de - Stiftung Warentest[/url] <br />";
echo parseBBCode($text4);
Woran kann das liegen?
Kommentar