Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den veralteten PHP-Modifikator „/e' in „preg_replace' sicher durch „preg_replace_callback' ersetzen?

Wie kann ich den veralteten PHP-Modifikator „/e' in „preg_replace' sicher durch „preg_replace_callback' ersetzen?

DDD
DDDOriginal
2024-12-27 12:35:11621Durchsuche

How Can I Safely Replace PHP's Deprecated `/e` Modifier in `preg_replace` with `preg_replace_callback`?

Dem Modifikator mit preg_replace_callback entgehen

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:

  • Entfernen Sie den /e-Modifikator aus dem regulären Ausdruck Muster.
  • Erwägen Sie die Verwendung einer benannten Capture-Gruppe ((?Ppattern)) für besser lesbare Rückrufargumente.
  • Beachten Sie den Variablenbereich und verwenden Sie das Schlüsselwort use, um auf externe Variablen zuzugreifen in Rückrufen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn