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

Wie kann man den veralteten PHP-Modifikator „preg_replace()' „/e' sicher durch „preg_replace_callback()' ersetzen?

Susan Sarandon
Freigeben: 2024-12-19 12:15:16
Original
538 Leute haben es durchsucht

How to Safely Replace PHP's Deprecated `preg_replace()` `/e` Modifier with `preg_replace_callback()`?

Ersetzen Sie den Modifikator „/e“ von preg_replace() durch preg_replace_callback()

Reguläre Ausdrücke können einschüchternd sein, insbesondere wenn Sie mit der Erfassung von Gruppen und Ersetzungen arbeiten. Lassen Sie uns eine Ersetzungsaufgabe aus preg_replace() mit dem Modifikator „/e“ entschlüsseln:

public static function camelize($word) {
   return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word);
}
Nach dem Login kopieren

Hier besteht das Ziel darin, den Buchstaben nach „^“ (Anfang der Zeichenfolge) oder „_“ ( Unterstrich).

Den Modifikator „/e“ verstehen

Der Modifikator „/e“ wertet die Ersetzungszeichenfolge als aus PHP-Code. „2“ bezieht sich auf die zweite erfasste Gruppe, bei der es sich um den Kleinbuchstaben nach „^“ oder „_“ handelt. Dieser Modifikator ist jedoch aus Sicherheitsgründen veraltet.

Der Übergang zu preg_replace_callback()

preg_replace_callback() bietet eine sicherere Alternative, indem eine Rückruffunktion anstelle einer Ersetzungszeichenfolge bereitgestellt wird:

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);
Nach dem Login kopieren
Nach dem Login kopieren

Die Callback-Funktion

Die anonyme Funktion akzeptiert ein Array von Übereinstimmungen als ein Argument. Hier stellt $matches[1] das „^“ oder „_“ und $matches[2] den Buchstaben dar, der großgeschrieben werden soll.

Vertauschen der Muster

Beachten Sie, dass das „/e“ Der Modifikator muss entfernt werden, wenn preg_replace_callback() verwendet wird. Das obige Muster vereinfacht sich wie folgt:

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);
Nach dem Login kopieren
Nach dem Login kopieren

Variablenbereich

Anonyme Funktionen haben nur Zugriff auf Variablen, die explizit mit dem Schlüsselwort „use“ importiert wurden.

Problemfälle

  • Der Modifikator „/e“ entfernt im Gegensatz dazu Schrägstriche aus Argumenten preg_replace_callback().
  • Das Schlüsselwort „use“ ermöglicht das Importieren von Variablen in den Callback und behebt so Probleme beim Variablenbereich.

Das obige ist der detaillierte Inhalt vonWie kann man den veralteten PHP-Modifikator „preg_replace()' „/e' sicher durch „preg_replace_callback()' ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage