1
Hallo Miteinander,
ich brüte gerade über einem pikanten Problem. Bei unserem Webangebot sollen künftig auch Quote-BBCode-Tags angeboten werden, diese sollen verschachtelbar sein.
Beispiel:
Ich habe schon versucht dies normal über preg_replace und preg_replace_callback abzuwickeln, aber der innere Teil vom BBCode (also das innere Zitat im obigen Beispiel) wird nicht ersetzt.
Ich denke die Erklärung dafür ist, dass der Regex mit dem Modifier Ungreedy ausgestattet ist (sonst würde es sowieso nicht richtig gehen) und nach dem ersten Replace nach dem Replace fortgefahren wird und nicht wie man annehmen könnte wieder von vorn.
Wie könnte man das bewältigen?
*edit: Ich habe mir gerade überlegt, dass man es vllt folgendermaßen lösen könnte:
Was meint ihr? Das Problem ist, dass preg_match nicht mit einem Array umgehen kann.
ich brüte gerade über einem pikanten Problem. Bei unserem Webangebot sollen künftig auch Quote-BBCode-Tags angeboten werden, diese sollen verschachtelbar sein.
Beispiel:
(Quote_a)
{
text
(Quote_b)
mehr text
(/Quote_b)
(/Quote_a)
Ich habe schon versucht dies normal über preg_replace und preg_replace_callback abzuwickeln, aber der innere Teil vom BBCode (also das innere Zitat im obigen Beispiel) wird nicht ersetzt.
Ich denke die Erklärung dafür ist, dass der Regex mit dem Modifier Ungreedy ausgestattet ist (sonst würde es sowieso nicht richtig gehen) und nach dem ersten Replace nach dem Replace fortgefahren wird und nicht wie man annehmen könnte wieder von vorn.
Wie könnte man das bewältigen?
*edit: Ich habe mir gerade überlegt, dass man es vllt folgendermaßen lösen könnte:
do
{
$text = preg_replace($bbcode,$replace,$text);
}
while(preg_match($bbcode,$replace,$text)===1));
Was meint ihr? Das Problem ist, dass preg_match nicht mit einem Array umgehen kann.