Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man den veralteten PHP-Modifikator „preg_replace()' „/e' sicher durch „preg_replace_callback()' ersetzen?
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); }
Hier besteht das Ziel darin, den Buchstaben nach „^“ (Anfang der Zeichenfolge) oder „_“ ( Unterstrich).
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.
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);
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.
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);
Anonyme Funktionen haben nur Zugriff auf Variablen, die explizit mit dem Schlüsselwort „use“ importiert wurden.
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!