Maison > développement back-end > tutoriel php > Comment remplacer en toute sécurité le modificateur /e de preg_replace() par preg_replace_callback() ?

Comment remplacer en toute sécurité le modificateur /e de preg_replace() par preg_replace_callback() ?

Linda Hamilton
Libérer: 2024-12-31 02:25:10
original
779 Les gens l'ont consulté

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

Transition du modificateur /e de preg_replace() vers preg_replace_callback

Références arrière d'expression régulièreAu 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal