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

Comment puis-je remplacer en toute sécurité le modificateur `/e` obsolète de PHP dans `preg_replace` par `preg_replace_callback` ?

DDD
DDDoriginal
2024-12-27 12:35:11621parcourir

How Can I Safely Replace PHP's Deprecated `/e` Modifier in `preg_replace` with `preg_replace_callback`?

Échapper au modificateur avec 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 :

  • Supprimer le modificateur /e de l'expression régulière pattern.
  • Envisagez d'utiliser un groupe de capture nommé ((?Ppattern)) pour des arguments de rappel plus lisibles.
  • Soyez conscient de la portée des variables et utilisez le mot-clé use pour accéder aux variables externes. dans les rappels.

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!

Déclaration:
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