De l’intérêt d’utiliser un langage interprété – Appliquer une fonction aux références arrières avec preg_replace

Eveything goes with PHP sauce
Vous connaissez tous la fonction preg_replace. Je l’utilise depuis des années mais n’avais jamais observé son comportement associée au modificateur « e »

Jetez juste un coup d’oeil au code suivant:

echo preg_replace(
  '/{(.*?)}/e', 
  'strtoupper("$1")', 
  '{did you know} you {could} apply {a} function to {a replacement} using preg_replace?'
);

Le résultat vas être « DID YOU KNOW you COULD apply A function to A REPLACEMENT using preg_replace? ».
On a choisit strtoupper pour l’exemple mais n’importe quelle expression fonctionnera.

A noter, et c’est important, que la fonction est incluse dans la chaîne de caractère du remplacement.

Le truc est le modificateur « e » de l’expression régulière. Le comportement de preg_replace est alors modifié pour utiliser non plus la chaîne de remplacement donnée à preg_replace mais le résultat de son traitement par eval().

Attention donc, le second paramètre doit toujours être une chaîne de caractères et il convient alors de l’échapper correctement.

  1. Aucun commentaire pour l'instant

  1. Aucun trackback pour l'instant