Tomarus
22.02.2005, 17:13
Moin :)
Da ich gerade mal wieder an meinem tollen Forum arbeitete, stoße ich mal wieder auf das Problem der BB-Codes. Gäbe ja verschiedene Möglichkeiten der Ersetzung.
1)
$text = str_replace ('\', '<strong>', $_POST['text']);
$text = str_replace ('\[/b\]', '</strong>', $text); // und so weiter mit den anderen Codes
Problem dabei dann: Niemand zwingt den User, den Tag auch wieder zuzumachen, womit sich das auf nachfolgende Schrift auswirken kann. Mögliche Notlösung:
$text .= '</b></i></u>';
Wobei man allerdings je nach Umfang der BB-Codes einiges zumachen müsste. Gefällt mir nicht.
2)
$text = eregi_replace ('\[b\](.*)\[/b\]', '<strong>//1</strong>', $_POST['text']);
Problem: Kommt nur klar, wenn in den Posts jeder Tag nur einmal verwendet wird. Sonst kommt was à la
<strong>Hallo! Wie geht's? Mir geht's gut!</strong>
Was dann auch nicht ganz das Wahre ist.
3) So hatte ich es mal notdürftig gelöst ...
$text = eregi_replace('\[b\](.*)\[b\]', '[b]\\1', $_POST['text']);
$text = eregi_replace('\[/b\](.*)\[/b\]', '\\1', $text);
$text = eregi_replace ('\[b\](.*)\[/b\]', '<strong>//1</strong>', $_POST['text']);
$text = eregi_replace ('\[b2\](.*)\[/b2\]', '<strong>//1</strong>', $_POST['text']);
Lässt sich zwar auf beliebig viele erweitern, produziert aber einmal sehr viel Code, und ist außerdem eben auch nicht perfekt. Ich kann mir also die Arbeit machen, und das auf 50 erweitern - wenn wer 51 verwendet, funktioniert's wieder nicht.
Daher hätte ich nun eben die Frage, wie man das am geschicktesten macht ... ob es eine kleine Erweiterung zu einem der oberen braucht, ob es eine hierfür günstige Alternative zu eregi_replace oder str_replace gibt, ob man um die Notlösung von 1) nicht herum kommt ... ich denke, ihr wisst Bescheid ;)
Da ich gerade mal wieder an meinem tollen Forum arbeitete, stoße ich mal wieder auf das Problem der BB-Codes. Gäbe ja verschiedene Möglichkeiten der Ersetzung.
1)
$text = str_replace ('\', '<strong>', $_POST['text']);
$text = str_replace ('\[/b\]', '</strong>', $text); // und so weiter mit den anderen Codes
Problem dabei dann: Niemand zwingt den User, den Tag auch wieder zuzumachen, womit sich das auf nachfolgende Schrift auswirken kann. Mögliche Notlösung:
$text .= '</b></i></u>';
Wobei man allerdings je nach Umfang der BB-Codes einiges zumachen müsste. Gefällt mir nicht.
2)
$text = eregi_replace ('\[b\](.*)\[/b\]', '<strong>//1</strong>', $_POST['text']);
Problem: Kommt nur klar, wenn in den Posts jeder Tag nur einmal verwendet wird. Sonst kommt was à la
<strong>Hallo! Wie geht's? Mir geht's gut!</strong>
Was dann auch nicht ganz das Wahre ist.
3) So hatte ich es mal notdürftig gelöst ...
$text = eregi_replace('\[b\](.*)\[b\]', '[b]\\1', $_POST['text']);
$text = eregi_replace('\[/b\](.*)\[/b\]', '\\1', $text);
$text = eregi_replace ('\[b\](.*)\[/b\]', '<strong>//1</strong>', $_POST['text']);
$text = eregi_replace ('\[b2\](.*)\[/b2\]', '<strong>//1</strong>', $_POST['text']);
Lässt sich zwar auf beliebig viele erweitern, produziert aber einmal sehr viel Code, und ist außerdem eben auch nicht perfekt. Ich kann mir also die Arbeit machen, und das auf 50 erweitern - wenn wer 51 verwendet, funktioniert's wieder nicht.
Daher hätte ich nun eben die Frage, wie man das am geschicktesten macht ... ob es eine kleine Erweiterung zu einem der oberen braucht, ob es eine hierfür günstige Alternative zu eregi_replace oder str_replace gibt, ob man um die Notlösung von 1) nicht herum kommt ... ich denke, ihr wisst Bescheid ;)