Imp
mercredi 14 novembre 2007 à 10:40
Merci pour l'explication Dan.
Sinon j'ai trouvé une solution (un peu par hasard...) pour mon premier exemple.
Ça va bien en utilisant le modificateur "e"
Donc ceci fonctionne :
CODE
$titre="hello {5}";
$d[5]="world";
echo preg_replace('/{([0-9]+)}/e', '$d[\\1]', $titre);
De même en remplaçant le \\1 par $1, ça marche aussi.
En revanche si j'enlève les simple quotes ou que je mets à la place de double quotes, ça ne va plus.
Ça me laisse un peu perplexe.
Infos sur le modificateur "e" :
CITATION
Avec cette option, preg_replace effectue la substitution normale des références arrières dans la chaîne de remplacement, puis l'évalue comme un code PHP, et utilise le résultat pour remplacer la chaîne de recherche.
Les simples et doubles quotes sont échappées avec des anti-slashes ( \ ) dans les références arrières substituées.
Seule preg_replace utilise cette option. Elle est ignorée par les autres.
http://www.manuelphp.com/php/reference.pcr...n.modifiers.php