Guten Morgen zusammen!
Habe gerade ein ziemliches Problem mit meiner selbstgeschriebenen BBCode-Klasse. Diese soll komplett XHTML 1.0 strict-konform sein. Um diese Konformität in jedem Fall zu gewährleisten, muss ich sicherstellen, dass im ausgegebenen HTML Inline-Elemente auf keinen Fall Block-Elemente Enthalten (bsp: <span><div>...</div></span> ist nicht konform). Dazu möchte ich "inline"-BBCodes, die "block"-BBCodes enthalten, schlicht löschen. Das erledigen soll die Methode "removeInlineBlock" aus meiner BBCode-Klasse, deren Source <a href="http://www.stalkernet.info/ruunv3/bbc_src.php">hier</a> zu finden ist.
Die BBCode-Zeichenkette, die von dieser Funktion verarbeitet wird, wird vorher in der Methode parse durch folgendes Konstrukt gejagt:
<pre>$string = nl2br(htmlspecialchars(trim($string)));</pre>
Das Problem an dieser Vertrackten removeInlineBlock-Methode: sie hat keine Auswirkungen auf die BBCode-Zeichenkette, d.h. der Ausdruck extrahiert die Block-Elemente, die innerhalb von Inline-Elementen auftreten, nicht. Ich habe diesen Ausdruck sowohl mit 3 fehlerhaften BBCodes als auch mit 2 und einem getestet, und in keinem Fall scheint der Ausdruck das jeweils auftretende fehlerhafte Konstrukt, zum Beispiel
<pre>
für ersetzenswert zu erachten. Ich bin mit meinem Latein echt am Ende, was diese Funktion betrifft, und hoffe auf Hilfe der Mitglieder dieses Forums.
(PS: PHP 4.3.10 läuft als apache 1.2-modul auf einem Linux-Rootserver)
Gruß,
Tobi
Habe gerade ein ziemliches Problem mit meiner selbstgeschriebenen BBCode-Klasse. Diese soll komplett XHTML 1.0 strict-konform sein. Um diese Konformität in jedem Fall zu gewährleisten, muss ich sicherstellen, dass im ausgegebenen HTML Inline-Elemente auf keinen Fall Block-Elemente Enthalten (bsp: <span><div>...</div></span> ist nicht konform). Dazu möchte ich "inline"-BBCodes, die "block"-BBCodes enthalten, schlicht löschen. Das erledigen soll die Methode "removeInlineBlock" aus meiner BBCode-Klasse, deren Source <a href="http://www.stalkernet.info/ruunv3/bbc_src.php">hier</a> zu finden ist.
Die BBCode-Zeichenkette, die von dieser Funktion verarbeitet wird, wird vorher in der Methode parse durch folgendes Konstrukt gejagt:
<pre>$string = nl2br(htmlspecialchars(trim($string)));</pre>
Das Problem an dieser Vertrackten removeInlineBlock-Methode: sie hat keine Auswirkungen auf die BBCode-Zeichenkette, d.h. der Ausdruck extrahiert die Block-Elemente, die innerhalb von Inline-Elementen auftreten, nicht. Ich habe diesen Ausdruck sowohl mit 3 fehlerhaften BBCodes als auch mit 2 und einem getestet, und in keinem Fall scheint der Ausdruck das jeweils auftretende fehlerhafte Konstrukt, zum Beispiel
<pre>
- ...
für ersetzenswert zu erachten. Ich bin mit meinem Latein echt am Ende, was diese Funktion betrifft, und hoffe auf Hilfe der Mitglieder dieses Forums.
(PS: PHP 4.3.10 läuft als apache 1.2-modul auf einem Linux-Rootserver)
Gruß,
Tobi
Comment