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)
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)
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
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
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)
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]
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>
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);
mit einem postfilter hab ich es auch schon probiert, den addparser auskommentiert und stattdessen einen postfilter
PHP-Code:
//$bbcode->addFilter(STRINGPARSER_FILTER_POST, 'nl2br');
Code:
<ul><br> <li></li>text<br> <li></li>text</br> </ul><br>
Kommentar