RegExp „alles außer“ Denkfehler

Wenn man in PHP durch die Funktion preg_replace() zwischen zwei beliebigen Markierungen (z.B. HTML-Tags) den Inhalt ersetzen will, dann ist das erst einmal einfach möglich:

preg_replace('/< .*>(.*)< \/.*>/', 'Michael', 'Guten Tag, <span>Gast</span>!');

Bei einer Erweiterung ergibt sich jedoch schnell das Problem, dass diese Markierungen entweder nur einmal im gesamten Text ($subject) vorkommen darf. Kommen die Markierungen mehrmals vor, so ersetzt preg_replace() den Inhalt zwischen der allerersten und der allerletzten Markierung. Das ist meistens unerwünscht.
„RegExp „alles außer“ Denkfehler“ weiterlesen