Hallo!
Ich möchte verhindern, dass jemand mit BBCode block elemente innerhalb inline elemente setzt
(z.B.: <b*>*<div*>*</div>*[/b] soll mit <b*>*[/b]<div*>
*</div>
* ersetzt werden).
Hier ist mein Script:
PHP-Code:
<?php
//test string
$str = "[b]bla<div id=\"2\">bla</div>foobar[/b]";
//inline elemente
$inline = array("a","em","strong","span");
//falsches setzen von tags verhindern (block-elemente in inline-elemente, z.B. [b]<div></div>[/b]
foreach($inline as $key => $value) {
//<tag*>*<div*>*</div>*</tag>
$ausdruck = "=<".$value."([^\"]*)>([^\"]*)<div([^\"]*)>([^\"]*)</div>([^\"]*)</".$value.">=siU";
//<tag*>*</tag><div*><tag*>*</tag*></div><tag*>*</tag>
$ersatz = "<".$value."\\1>\\2</".$value."><div\\3><".$value."\\1>\\4</".$value."></div>
<".$value."\\1>\\5</".$value.">";
$str = preg_replace($ausdruck, $ersatz, $str);
}
echo $str;
?>
Wenn ich das Script laufen lasse, ersetzt er gar nichts, obwohl er das doch eigentlich sollte. Ich hab recht viel Zeit damit verbracht den Fehler zu finden, hab es aber nicht geschafft.
Hoffe ihr könnt mir helfen
