Jetzt kostenlos Anmelden!

2Bad4You Männlich

findet sich zurecht

Beiträge: 103

Geschlecht: Männlich

Wohnort: Neustadt/Wied

PHPKIT Version: keine

1

Freitag, 22. Mai 2009, 16:18

Mit regulären ausdrücken url bb-code erstellen

Hi,

ich versuche mit hilfe von Regulären Ausdrücken angaben wie z.b

Quellcode

1
[url=http://www.google.de]google[/url]
in normales HTML umzuwandeln. Dafür benutze ich folgende Funktion:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
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;
}


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:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
$text "[url=http://www.test.de]test[/url] <br /><br />";

echo parseBBCode($text);

$text2 "[url]http://www.test.de[/url] <br /><br />";

echo parseBBCode($text2);

$text3 "[url=www.test.de]test2[/url] <br /><br />";

echo parseBBCode($text3);


klappen ja, nur die 4te welche so ausgegeben werden soll:

PHP-Quelltext

1
2
3
$text4 "[url=http://www.test.de]test[/url] <br \> [url=www.test.de]test2[/url] <br /> [url]www.test.de[/url] <br />";

echo parseBBCode($text4);


wird nicht mehr korrekt ausgegeben.

Woran liegt das?
  • Zum Seitenanfang
  • Zum Seitenende

Ähnliche Themen

Tagging