Christian Seilers BBCode Parser Problem mit Zeilenumbrüchen

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

  • Christian Seilers BBCode Parser Problem mit Zeilenumbrüchen

    Hallo,

    ich hoffe hier haben vielleicht einige mit der BBCode klasse von Christian Seiler gearbeitet. Ich habe nämlich das problem, dass ich der Übersichtsichlichkeit halber die BBCodes untereinander schreiben kann.

    quasi so (irgendwie wird das b interpretiert)

    Code:
    [color]
    [font]
    [.b]
    farbiger, fetter text mit anderer schriftart
    [/b]
    [/font]
    [/color]
    dummerweise wird dann über und unter dem text zeilenumbrüche gesetzt.
    sodass der html code so aussieht

    (Code ist zur veranschaulichung der richtige Code ist xhtml valide)
    Code:
     
    <font color=red><br>
    <font face=arial><br>
    <b><br>
    farbiger, fetter text mit anderer schriftart
    </b><br>
    </font>
    </font><br>
    ich hab jetzt schon längere zeit mit den filtern und flags experimentiert aber funktionieren tut es leider nicht. vielleicht kann mir jemand helfen

    nachfolgend der vereinfachte code

    PHP-Code:
    $bbcode = new StringParser_BBCode();

    $bbcode->setRootParagraphHandling(false);
    $bbcode->setGlobalCaseSensitive (false);

    $bbcode->addParser (array ('block''inline''link''listitem''quote'), 'htmlspecialchars');
    $bbcode->addParser (array ('block''inline''link''listitem''quote'), 'nl2br');
    $bbcode->addParser ('list''bbcode_stripcontents');

    //hier stehen die addcodes


    $bbcode->setCodeFlag ('*''closetag'BBCODE_CLOSETAG_OPTIONAL);
    $bbcode->setCodeFlag ('*''paragraphs'false);
    $bbcode->setCodeFlag ('list''paragraph_type'BBCODE_PARAGRAPH_BLOCK_ELEMENT);
    $bbcode->setCodeFlag ('list''opentag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('list''closetag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('list''opentag.after.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('list''closetag.after.newline'BBCODE_NEWLINE_DROP);

    $bbcode->setCodeFlag ('color''opentag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('color''opentag.after.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('color''closetag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag('color''closetag.after.newline'BBCODE_NEWLINE_DROP);

    $bbcode->setCodeFlag ('font''opentag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('font''opentag.after.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag ('font''closetag.before.newline'BBCODE_NEWLINE_DROP);
    $bbcode->setCodeFlag('font''closetag.after.newline'BBCODE_NEWLINE_DROP);
          
    echo 
    $bbcode->parse($text); 
    ich hoffe mir kann jemand helfen und weiß wie ich es schaffe, dass das erste "neue zeile zeichen" nach einem bbcode ignoriert wird aber dennoch alle anderen welche im text sidn zu einem br übersetzt.

    mit einem postfilter hab ich es auch schon probiert, den addparser auskommentiert und stattdessen einen postfilter

    PHP-Code:
    //$bbcode->addFilter(STRINGPARSER_FILTER_POST, 'nl2br'); 
    genutzt. dann kommt allerdings extrem invalides html bei raus, da jedes html element ein br trägt und dann z.b. sehr invalide listen wie solche rauskommen (mit obigem code)

    Code:
     
    <ul><br>
    <li></li>text<br>
    <li></li>text</br>
    </ul><br>

  • #2
    Code:
    $text = preg_replace("|(\[)([^\]/]*)(\])(<br />)|si", "$1$2$3", $text);
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      eigentlich möchte ich mein ziel mit den mitteln erreichen welche mir die klasse zur verfügung stellt. ich denke mal der regex bezieht sich auf den ulkigen list-code. dieser entsteht wahrscheinlich durch den falschen zusammenbau der parsermethoden.

      Kommentar

      Lädt...
      X