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()` ?

Comment remplacer en toute sécurité le modificateur `preg_replace()` `/e` obsolète de PHP par `preg_replace_callback()` ?

Susan Sarandon
Libérer: 2024-12-19 12:15:16
original
493 Les gens l'ont consulté

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

Remplacez le modificateur '/e' de preg_replace() 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);
}
Copier après la connexion

Ici, le but est de mettre en majuscule la lettre qui suit '^' (début de la chaîne) ou '_' ( soulignement).

Comprendre le modificateur '/e'

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é.

La transition vers preg_replace_callback()

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);
Copier après la connexion
Copier après la connexion

La fonction de rappel

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.

Interchanger les modèles

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);
Copier après la connexion
Copier après la connexion

Portée des variables

Les fonctions anonymes n'ont accès qu'aux variables explicitement importées à l'aide du mot-clé 'use'.

Gotchas

  • Le modificateur '/e' supprime les barres obliques des arguments, contrairement à preg_replace_callback().
  • Le mot-clé 'use' permet d'importer des variables dans le rappel, résolvant ainsi les problèmes de portée des variables.

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