Das Problem:
Habe ein kleines Forum geschrieben, nun sollen bbcodes aus den einzelnen Beiträgen umgewandelt werden.
Es gibt 2 Möglichkeiten wie der Code aussieht.
1.) Mit einem Parameter
2.) Mit zwei Parametern
Bei einem Parameter gibt es keine Probleme,
kann verschachtelt werden bis zu einer beliebigen Tiefe.
Auch bei 2 Parametern ohne Verschachtelung treten keine Probleme auf.
Das Problem tritt erst auf wenn 2 oder mehr Codes mit 2 Params verschachtelt werden.
Fehlerhafter Code nach Umwandlung:
Abschließend noch mein Code zur Umwandlung,
ich vermute ich habe Fehlerhaft escaped allerdings konnte ich das auch nach längerem suchen nicht beheben, da es in der PHP doku und auch sonst nicht zufriedenstellend behandelt wird. Ich hoffe auf eure Hilfe.
Habe ein kleines Forum geschrieben, nun sollen bbcodes aus den einzelnen Beiträgen umgewandelt werden.
Es gibt 2 Möglichkeiten wie der Code aussieht.
1.) Mit einem Parameter
PHP-Code:
[b]Hallo Welt[/b]
PHP-Code:
[size=2]Hallo Welt[/size]
kann verschachtelt werden bis zu einer beliebigen Tiefe.
Auch bei 2 Parametern ohne Verschachtelung treten keine Probleme auf.
Das Problem tritt erst auf wenn 2 oder mehr Codes mit 2 Params verschachtelt werden.
Fehlerhafter Code nach Umwandlung:
PHP-Code:
[size=2][color=red]Hallo Welt[/color][/size]
-> wird zu
<font size="2][color=red]Hallo Welt[/color"></font>
ich vermute ich habe Fehlerhaft escaped allerdings konnte ich das auch nach längerem suchen nicht beheben, da es in der PHP doku und auch sonst nicht zufriedenstellend behandelt wird. Ich hoffe auf eure Hilfe.
PHP-Code:
<?php
/*************
BB Code
*************/
$res_bb = mysql_db_query("$dbname", "SELECT code, replacement, params FROM inside2_bbcode ORDER BY id");
$num_bb = mysql_num_rows($res_bb);
for ($x=0; $x<$num_bb; $x++) {
$bb_code = mysql_result($res_bb, $x, "code");
$bb_replace = mysql_result($res_bb, $x, "replacement");
$bb_params = mysql_result($res_bb, $x, "params");
if ($bb_params == '1') {
$bb_text = eregi_replace("\\[$bb_code](.*)\\[/$bb_code]", "$bb_replace", $bb_text);
}
if ($bb_params == '2') {
$bb_text = eregi_replace("\\[$bb_code\\=(.*)](.*)\\[/$bb_code]", "$bb_replace", $bb_text);
}
}
?>
Kommentar