Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den veralteten PHP-Modifikator „/e' in „preg_replace' sicher durch „preg_replace_callback' ersetzen?
Die Herausforderung:
Modifikatoren für reguläre Ausdrücke wie /e sind in PHP veraltet . Dies stellt eine Herausforderung dar, wenn versucht wird, den Modifikator /e im folgenden Code durch die Alternative preg_replace_callback zu ersetzen:
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
Rückverweise verstehen:
Das /e Der Modifikator ersetzt Backslashes durch Zahlen (1), um erfasste Teile der übereinstimmenden Zeichenfolge darzustellen. Beispielsweise ist im gegebenen Ausdruck (^|_)([a-z]) die erste Erfassung (^|_) und die zweite ([a-z]).
Die preg_replace_callback-Alternative:
preg_replace_callback übernimmt eine Callback-Funktion, die ein Array erfasster Untermuster als Argument empfängt. Das erste Untermuster befindet sich bei Index 0, das zweite bei Index 1 und so weiter.
Auf den Code anwenden:
Um den /e-Modifikator zu ersetzen, benötigen wir um die Ersetzungszeichenfolge in eine anonyme Funktion umzuwandeln:
function($m) { return strtoupper($m[2]); }
Diese Funktion nimmt das Übereinstimmungsarray $m und gibt das zweite erfasste Untermuster zurück, in das konvertiert wurde Großbuchstaben.
Alles kombinieren:
Der endgültige Code lautet:
public static function camelize($word) { return preg_replace_callback('/(^|_)([a-z])/', function($m) { return strtoupper($m[2]); }, $word); }
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWie kann ich den veralteten PHP-Modifikator „/e' in „preg_replace' sicher durch „preg_replace_callback' ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!