Vorausschauendes Ausschließen in regulären Ausdruck

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vorausschauendes Ausschließen in regulären Ausdruck

    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
    PHP Code:
    preg_replace_callback('/\<tag (1|0)\>.*(?!\<tag)\<\/tag\>/iU'"parse"$str); 
    Leider wird so immer das äußerste Tagpaar als Treffer erkannt.

    Verwende ich
    PHP Code:
    preg_replace_callback('/\<tag (1|0)\>(?!\<tag).*(?!\<tag)\<\/tag\>/iU'"parse"$str); 
    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.
    Last edited by Pennywise; 03-01-2006, 17:53.

  • #2
    Re: Vorausschauendes Ausschließen in regulären Ausdruck

    PHP Code:
    preg_replace_callback('/\<tag (1|0)\>(?!.*\<tag).*\<\/tag\>/iU'"parse"$str); 
    ?

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Comment


    • #3
      Danke!

      Comment

      Working...
      X