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.
Kommentar