Transition du modificateur /e de preg_replace() vers preg_replace_callback
Références arrière d'expression régulière
Au cœur de cette transition se trouve la compréhension références arrière dans les expressions régulières. Lorsqu'un modèle contient des groupes de capture (délimités par des parenthèses), le texte correspondant au sein de chaque groupe se voit attribuer un numéro de référence arrière. Dans ce cas, la référence arrière 2 fait référence à la lettre minuscule correspondante.
Le modificateur /e dans preg_replace()
Le modificateur /e désormais obsolète dans preg_replace () autorisé la substitution de modèle avec du code PHP. En utilisant ce modificateur, vous pourriez avoir des chaînes de remplacement générées dynamiquement. Cependant, il comportait également des risques de sécurité en raison de sa capacité à exécuter du code arbitraire.
Enter preg_replace_callback
preg_replace_callback fournit une alternative au modificateur /e en introduisant des fonctions de rappel. Au lieu d'intégrer du code directement dans le modèle regex, vous pouvez désormais transmettre une fonction anonyme ou un rappel qui gère le processus de remplacement.
Traduction du modèle /e-Modified en un rappel
Pour traduire le modèle fourni 'strtoupper("2")' en fonction de rappel, nous pouvons simplement remplacer '2' par $m[2], où $m représente le tableau contenant les références arrière correspondantes à l'intérieur du rappel.
Exemple de rappel anonyme
Un exemple de fonction de rappel anonyme :
function ($m) { return strtoupper($m[2]); }
Copier après la connexion
Cette fonction prend le tableau $m en entrée, qui contient les références arrière. Il met ensuite en majuscule la deuxième référence arrière ($m[2]) et la renvoie en remplacement.
Notes et mises en garde
- N'oubliez pas de supprimez le modificateur /e du modèle lors de l'utilisation de preg_replace_callback.
- Utilisation du modificateur /e ajoutée des barres obliques vers les références arrière ; dans certains cas, vous devrez peut-être les supprimer lors de votre rappel.
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!