Maison >développement back-end >tutoriel php >Comment remplacer en toute sécurité le modificateur `preg_replace()` `/e` obsolète de PHP par `preg_replace_callback()` ?
Les expressions régulières peuvent être intimidantes, en particulier lorsque vous travaillez avec des groupes de capture et des remplacements. Déchiffrons une tâche de remplacement depuis preg_replace() en utilisant le modificateur '/e' :
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
Ici, le but est de mettre en majuscule la lettre qui suit '^' (début de la chaîne) ou '_' ( soulignement).
Le modificateur '/e' évalue le chaîne de remplacement en tant que code PHP. « 2 » fait référence au deuxième groupe capturé, qui est la petite lettre qui suit le « ^ » ou le « _ ». Ce modificateur, cependant, est obsolète pour des raisons de sécurité.
preg_replace_callback() offre une alternative plus sûre en fournissant une fonction de rappel au lieu d'une chaîne de remplacement :
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);
La fonction anonyme prend un tableau de correspondances comme un argument. Ici, $matches[1] représente le '^' ou '_' et $matches[2] la lettre à mettre en majuscule.
Notez que le '/e' le modificateur doit être supprimé lors de l'utilisation de preg_replace_callback(). Le modèle ci-dessus se simplifie en :
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);
Les fonctions anonymes n'ont accès qu'aux variables explicitement importées à l'aide du mot-clé 'use'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!