Problème de regex - impossible d'interprêter $1
Posté : 30 juil. 2010, 18:19
Bonjour,
premier message ici pour vous demander de l'aide sur un truc sur lequel je m'arrache les cheveux depuis un moment
Je dois parser une chaine de texte.
A certains moments je vais trouver des chaines du type [VAR]pseudo[/VAR].
Ce que je souhaite c'est remplacer cette chaine par la valeur de mon tableau correspondante.
Par exemple j'ai écrit ceci :
J'ai essayé en faisant des eval($1) ou en appelant une fonction et en lui passant $1 en paramètre mais toujours sans succès.
Si quelqu'un a une petite idée pour me dépanner je l'en remercie d'avance
premier message ici pour vous demander de l'aide sur un truc sur lequel je m'arrache les cheveux depuis un moment
Je dois parser une chaine de texte.
A certains moments je vais trouver des chaines du type [VAR]pseudo[/VAR].
Ce que je souhaite c'est remplacer cette chaine par la valeur de mon tableau correspondante.
Par exemple j'ai écrit ceci :
private function cleanMessageForFlash($pMessage, $pIdUser){
$user = array();
$user['pseudo'] = "Befa";
$user['prenom'] = "Fabrice";
$user['code_user'] = "F12345";
etc...
$patterns = array();
$patterns[0] = '/\[VAR\]([[:alpha:]]*_?[[:alpha:]]*)\[\/VAR\]/i';
$replaces = array();
$replaces[0] = $user['$1'];
$cleanText = preg_replace($patterns, $replaces, $pMessage);
return $cleanText;
}
si dans mon replaces[0] je passe juste $1 il va bien me récupérer pseudo, ou bien code_user, en revanche si j'essaie d'utiliser cette variable $1 comme indice de mon tableau il ne l'interprète plus que comme la chaine de caractère '$1' ...J'ai essayé en faisant des eval($1) ou en appelant une fonction et en lui passant $1 en paramètre mais toujours sans succès.
Si quelqu'un a une petite idée pour me dépanner je l'en remercie d'avance