Problemfall escapen [bbcode]

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

  • Problemfall escapen [bbcode]

    Das Problem:
    Habe ein kleines Forum geschrieben, nun sollen bbcodes aus den einzelnen Beiträgen umgewandelt werden.

    Es gibt 2 Möglichkeiten wie der Code aussieht.
    1.) Mit einem Parameter
    PHP-Code:
    [b]Hallo Welt[/b
    2.) Mit zwei Parametern
    PHP-Code:
    [size=2]Hallo Welt[/size
    Bei einem Parameter gibt es keine Probleme,
    kann verschachtelt werden bis zu einer beliebigen Tiefe.
    Auch bei 2 Parametern ohne Verschachtelung treten keine Probleme auf.
    Das Problem tritt erst auf wenn 2 oder mehr Codes mit 2 Params verschachtelt werden.

    Fehlerhafter Code nach Umwandlung:
    PHP-Code:
    [size=2][color=red]Hallo Welt[/color][/size]

    -> 
    wird zu

    <font size="2][color=red]Hallo Welt[/color"></font
    Abschließend noch mein Code zur Umwandlung,
    ich vermute ich habe Fehlerhaft escaped allerdings konnte ich das auch nach längerem suchen nicht beheben, da es in der PHP doku und auch sonst nicht zufriedenstellend behandelt wird. Ich hoffe auf eure Hilfe.

    PHP-Code:
    <?php

    /*************
    BB Code
    *************/

      
    $res_bb mysql_db_query("$dbname""SELECT code, replacement, params FROM inside2_bbcode ORDER BY id");
      
    $num_bb mysql_num_rows($res_bb);
      
      for (
    $x=0$x<$num_bb$x++) {
        
    $bb_code mysql_result($res_bb$x"code");
        
    $bb_replace mysql_result($res_bb$x"replacement");
        
    $bb_params mysql_result($res_bb$x"params");
        if (
    $bb_params == '1') {
          
    $bb_text eregi_replace("\\[$bb_code](.*)\\[/$bb_code]""$bb_replace"$bb_text);
        }
        if (
    $bb_params == '2') {
          
    $bb_text eregi_replace("\\[$bb_code\\=(.*)](.*)\\[/$bb_code]""$bb_replace"$bb_text);
        }
      }
      
    ?>

  • #2
    benutze preg_replace und den Modifier U (großes U = ungreedy = ungierig), dann macht er den Match so klein wie möglich.
    Sonst bekommst du nämlich auch Probleme, wenn der gleiche BB-Tag mehrmals hintereinander im Post vorkommt.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Danke sehr das war die Lösung

      Kommentar

      Lädt...
      X