Maison >développement back-end >tutoriel php >Comment puis-je remplacer en toute sécurité le modificateur `/e` obsolète de PHP dans `preg_replace` par `preg_replace_callback` ?
Le défi :
Les modificateurs d'expression régulière, comme /e, sont obsolètes en PHP . Cela présente un défi lorsque l'on tente de remplacer le modificateur /e dans le code suivant par l'alternative preg_replace_callback :
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
Comprendre les références arrière :
Le /e Le modificateur remplace les barres obliques inverses par des nombres (1) pour représenter les parties capturées de la chaîne correspondante. Par exemple, dans l'expression donnée (^|_)([a-z]), la première capture est (^|_) et la seconde est ([a-z]).
L'alternative preg_replace_callback :
preg_replace_callback prend une fonction de rappel qui reçoit un tableau de sous-modèles capturés comme argument. Le premier sous-modèle est à l'index 0, le second à l'index 1, et ainsi de suite.
Application au code :
Pour remplacer le modificateur /e, nous avons besoin pour convertir la chaîne de remplacement en une fonction anonyme :
function($m) { return strtoupper($m[2]); }
Cette fonction prend le tableau de correspondances $m et renvoie le deuxième sous-modèle capturé converti en majuscules.
Combiner tout :
Le code final devient :
public static function camelize($word) { return preg_replace_callback('/(^|_)([a-z])/', function($m) { return strtoupper($m[2]); }, $word); }
Considérations supplémentaires :
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!