OVH Cloud OVH Cloud

preg_replace & tableau deref

2 réponses
Avatar
xxx
bonjour

J'ai un texte template style: "$language[1] bla bla $language[2]"

et je veux remplacer $language[1], $language[2] etc etc par leurs
valeurs reelles

comment faire ?

echo preg_replace("/\\\$language\[(\d+)\]/","{$language[$1]}",$text);
marche pas

remplacer $1 par \\1 marche pas non plus ...

ni remplacer "{$language[$1]}" par "{$language[(int) \$1]}" comme j'ai
pu lire ailleurs

2 réponses

Avatar
Olivier Miakinen
bonjour

J'ai un texte template style: "$language[1] bla bla $language[2]"

et je veux remplacer $language[1], $language[2] etc etc par leurs
valeurs reelles

comment faire ?


Une idée qui vaut ce qu'elle vaut, tant que tu n'as pas de
$language[1048576], c'est d'utiliser une série de str_replace :
$text = str_replace($text, '$language[1]', $language[1]);
$text = str_replace($text, '$language[2]', $language[2]);
etc. (tu peux même faire une boucle).

echo preg_replace("/$language[(d+)]/","{$language[$1]}",$text);
marche pas


Pourquoi le triple au début ? C'est $language[1] que tu cherches, ou
$language[1] ?

Cela étant, si tu tiens absolument aux regexp, jette donc un coup d'½il
à la doc de preg_replace_callback. En particulier, il y a des exemples
similaires à ce que tu veux faire.

Avatar
loufoque
xxx a dit le 18/03/2005 à 00:41:

echo preg_replace("/$language[(d+)]/","{$language[$1]}",$text);
marche pas


Essaie
echo preg_replace('/$language[(d+)]/e', '$language[$1]', $text);