preg_match_all

campari

Erfahrenes Mitglied
Moin, habe einen String, der mehrfach durchsetzt ist mit durch Begrenzungen eingeschlossenen zu ersetzenden Zeichen.

Also zb.: Es START ging ein ENDE Mann die Treppe START rauf ENDE und wieder runter.

Der Text zwischen START und ENDE soll jeweils ersetzt werden.

Mein Vorgehen unten findet das Vorkommen aber immer nur einmal, nämlich das erste START und das letzte ENDE.
$arrOut[2] wäre in dem Fall also "ging ein ENDE Mann die Treppe START rauf ". Aber natürlich soll jedes START/ENDE Paar für sich gefunden werden.
Habs auch mal mit negierung von dem Start-Tag versucht, bringt auch nix
Danke für einen Denkanstoss:

PHP:
preg_match_all("@(".__TXT_START.")((.)*)([^".__TXT_START."])(".__TXT_END.")@s",$out,$arrOut);
foreach($arrOut[2] AS $suchen)
{
	// geschützte bereiche als array zwischenspeichern
	$out = str_replace(__TXT_START.$suchen.__TXT_END, $ersetzen[$a], $out);
	$a++;
}
 
Zurück