Hier mal eine Kurzform wie du das ganze auf z.b. 10 begrenzen kannst. Alle anderen werden der Einfachheit durch den Text [ERROR] bzw. [/ERROR] ersetzt.
öffne bbcode.php
finde
Code: Alles auswählen
if ($open_is_regexp)
{
$start_tag = preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag);
}
ersetze durch
Code: Alles auswählen
if ($open_is_regexp && $curr_nesting_depth < 10)
{
$start_tag = preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag);
}
elseif($open_is_regexp)
{
$start_tag = preg_replace($open_tag[$start_tag_index],"[ERROR]",$start_tag);
}
Suche
Code: Alles auswählen
if ($open_is_regexp)
{
$text = $before_start_tag . $start_tag;
}
else
{
$text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$uid]";
}
ersetze durch
Code: Alles auswählen
if ($open_is_regexp)
{
$text = $before_start_tag . $start_tag;
}
elseif($curr_nesting_depth < 10)
{
$text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$uid]";
}
else
{
$text = $before_start_tag . "[ERROR]";
}
direkt darunter das hier:
Code: Alles auswählen
$text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]";
durch das hier ersetzen:
Code: Alles auswählen
if($curr_nesting_depth < 10)
{
$text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]";
}
else
{
$text .= $between_tags . "[/ERROR]";
}
Ist zwar auch nicht unbedingt hübsch, aber sollte zumindest den Breakup verhindern. Du kannst die [ERROR] und [/ERROR] auch durch leere Strings ersetzen, nur
bzw.
sollte nicht rein, das könnte zu Endlosschleifen führen (im Prinzip könntest du nach den Ersetzungen [ERROR] und [/ERROR] wieder durch die Originale ersetzen, das habe ich aber jetzt mal nicht ausgeführt).
Bitte vor den Änderungen ein Backup machen.
Bei 50 Quotes sollte das ganze dann so aussehen: