Ich habe eine Zeichenfolge, die mehrere Übereinstimmungen enthalten kann (jedes Wort von Prozentzeichen umgeben) und ein Array von Ersetzungen - sie Schlüssel der jeder Ersatz ist die Übereinstimmung von die Regex. Einige Code wird wahrscheinlich erklären, dass eine bessere ...PHP preg_replace - Finden der Ersetzung von einem Array mit der Übereinstimmung als Schlüssel
$str = "PHP %foo% my %bar% in!";
$rep = array(
'foo' => 'does',
'bar' => 'head'
);
Das gewünschte Ergebnis Wesen:
$str = "PHP does my head in!"
ich folgendes versucht haben, von denen keine Arbeit:
$res = preg_replace('/\%([a-z_]+)\%/', $rep[$1], $str);
$res = preg_replace('/\%([a-z_]+)\%/', $rep['$1'], $str);
$res = preg_replace('/\%([a-z_]+)\%/', $rep[\1], $str);
$res = preg_replace('/\%([a-z_]+)\%/', $rep['\1'], $str);
So drehe ich Überlauf für Hilfe stapeln. Irgendwelche Abnehmer?
Der Modifikator 'e' ist seit PHP 5.5 "veraltet und die Verwendung wird dringend abgeraten". nach den in dieser Antwort zitierten Dokumenten. Eine alternative Lösung mit preg_replace_callback() wird vorgestellt [http://stackoverflow.com/questions/16237882/preg-replace-using-pattern-as-index-of-replacement-data-array] – user9645
Und die 'e 'Modifizierer ist ab PHP 7.0.0 ENTFERNT. – Jpsy