Url BB-Code mit RegEx

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Url BB-Code mit RegEx

    Hi,

    ich versuche mit hilfe von Regulären Ausdrücken angaben wie z.b
    Code:
    [url=http://www.google.de]google[/url]
    in normales HTML umzuwandeln. Dafür benutze ich folgende Funktion:
    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;

    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-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); 
    klappen ja, nur die 4te welche so ausgegeben werden soll:
    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); 
    wird nicht mehr korrekt ausgegeben.

    Woran kann das liegen?

  • #2
    RegEx alleine genügen nicht, wenn man sowas vernüftig umsetzen will - da ist schon ein ausgereifterer Parser gefragt.

    BBCode-Parserklasse für PHP
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar

    Lädt...
    X