par
starkeus » 22 déc. 2005, 13:17
Edit: j'ai trouvé..c'était le $ qu'il fallait échapper
bonjour à tous!
je souhaite remplacer des éléments de ma chaine de caractères pas d'autres avec preg_replace.
Voici ce que je veux faire exactement :
j'ai une chaine:
(champ1)+(champ2)+(champ3)
je souhaite obtenir la chaine suivante:
($1)+($2)+($3)
voici mon code:
$string="(champ1)+(champ2)+(champ3)";
$patterns="(\([_\-0-9\w\s]+\))";
echo $string."<br>";
echo preg_match_all ($patterns, $string, $resultat);
//j'ai tous les éléments que je dois remplacer dans mon tableau de résultat
echo "<pre>";
print_r($resultat);
echo "</pre>";
echo "<pre>";
echo count($resultat[0]);
echo "</pre>";
//je constitue mon tableau de remplacement
$replace=array();
for ($i = 0 ; $i < count($resultat[0]) ; $i ++)
//$replace[$i]='($'.($i+1).')';
$replace[$i]='\$'.($i+1);
echo "<pre>";
print_r($replace);
echo "</pre>";
//je remplace...
$string = preg_replace ($resultat[0], $replace, $string);
echo "<pre>";
echo $string;
echo "</pre>";
//j'obtiens: ()+()+()
Hélas je n'obtiens pas ce que je veux:
()+()+() au lieu de
($1)+($2)+($3)
Je suis loin d'être une bête en regex...mais mes patterns me semblent corrects.
Pourriez-vous m'aider SVP?
