Hallo,
Erst einmal möchte ich mein Versprechen halten und euch alle auf Ein neues Projekt von Scott Stadum aufmerksamm machen bei welchem er versucht Freiwillige Helfer im Bereich IT und potentielle Hilfesuchende in dritte Welt Ländern zusammenzuführen. Näheres erfahrt ihr auf dieser Seite: http://jeenaparadies.de/weblog/2004/august/freiwillige/
-----------------------
Und jetzt zu meinem Problem mit bbcode.
Ich benutze die bbcode Klasse von Christian Seiler http://www.christian-seiler.de/projekte/php/bbcode/ um folgendes zu erreichen:
[headline][/headline] => <h2></h2>
[list][*][/list] => <ul><li></li></ul>
[b][/b] => <em></em>
usw.
Jetzt wollte ich die Textabsätze die in der Textarea mittels \n\n (zwei mal Enter) gemacht werden in </p><p> umwandeln. Vor den ganzen Text noch ein <p> und danach ein </p> und es funktioniert mit reinem Text auch wunderbar.
Doch wenn ich jetzt ganz am Anfang eine <h2></h2> einsetze dann kommt logischerweise ein <p><h2></h2></p> raus was natürlich invalide ist. Die Klasse vereinheitlicht alle \n, \r und \r\n und ersetzt sie in <br />\n. Innerhalb des textes habe ich mir eine Funktion gebastelt die alles mögliche herausfiltert und ersetzt:
// Absätze erzeugen
function convertparagraphs ($text) {
$replace = array(
"<br />\n<hr /><br />\n",
"<br />\n<br />\n",
"<br />\n<ul>",
"</ul>\n</p>",
"<br />\n<h2>",
"</h2>",
"<p><h2>",
"</h2></p>",
"</h2>\n<br />\n",
"<br />\n<blockquote><p><br />\n",
"<br />\n</p></blockquote>\n<br />\n",
"<br />\n<blockquote><p>",
"</p></blockquote>\n<br />"
);
$to_this = array(
"</p>\n<hr />\n<p>",
"</p>\n<p>",
"</p>\n<ul>",
"</ul>",
"</p>\n<h2>",
"</h2>",
"<h2>",
"</h2>",
"</h2>\n<p>",
"</p>\n<blockquote><p>",
"</p></blockquote>\n<p>",
"</p>\n<blockquote><p>",
"</p></blockquote>\n<p>"
);
return "<p>".str_replace($replace, $to_this, $text)."</p>";
}
So weit funktioniert es auch aber leider nicht wenn ich am Anfang eine [headline] habe oder am ende eine Liste, oder allgemein gesagt wenn ich dort ein Blockelement habe, denn dann wird unnötigerweise ja immer noch ein <p> oder </p> eingefügt was nicht reingehört und die Seite invalide macht.
Hat sich damit vielleicht schon mal jemand von euch beschäftigt und hat da eine elegante Lösung gefunden? Ich habe hier nämlich ein schönes CMS gebastelt welches dem Kunden die Pflege der Seite mittels bbcode erleichtert. Es funktioniert natürlich alles wunderbar in den gängigen Browsern, aber es ist halt dieser Schönheitsfleck der mich ein wenig stört und ich denke dass das doch irgendwie zu lösen sein muss.
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.
Grüße
Jeena Paradies
In der Schweiz auf Tour mit Jeena
http://jeenaparadies.de/weblog/2004/august/schweiz/
Kinder schlagen zu Erziehungszwecken ist in Deutschland verboten!
http://jeenaparadies.de/artikel/kinderschlagen/
Jeenas Bannertauschportal; selbstgemacht ;-)
http://jeenasbannerbude.de