Ich möchte mittels preg_replace_callback aus einem großen String bestimmte Tags filtern. Dabei möchte ich immer das innerste Paar ersetzen, also z.B.
[COLOR=blue]<tag 1>[/COLOR][COLOR=green]<tag 0>[/COLOR]Testtext[COLOR=red]<tag 1>[/COLOR]<b>Testtext</b>[COLOR=red]</tag>[/COLOR]Testtext[COLOR=green]</tag>[/COLOR]Testtext[COLOR=blue]</tag>[/COLOR]
Nun versuchte ich es mit
Leider wird so immer das äußerste Tagpaar als Treffer erkannt.
Verwende ich
klappt es immer nur wenn die Tags direkt anschließen. Ich möchte aber prüfen ob ich das innerste Tagpaar erwischt habe.
Irgendwie stehe ich auf dem Schlauch.
[COLOR=blue]<tag 1>[/COLOR][COLOR=green]<tag 0>[/COLOR]Testtext[COLOR=red]<tag 1>[/COLOR]<b>Testtext</b>[COLOR=red]</tag>[/COLOR]Testtext[COLOR=green]</tag>[/COLOR]Testtext[COLOR=blue]</tag>[/COLOR]
Nun versuchte ich es mit
PHP Code:
preg_replace_callback('/\<tag (1|0)\>.*(?!\<tag)\<\/tag\>/iU', "parse", $str);
Verwende ich
PHP Code:
preg_replace_callback('/\<tag (1|0)\>(?!\<tag).*(?!\<tag)\<\/tag\>/iU', "parse", $str);
Irgendwie stehe ich auf dem Schlauch.
Comment