Version complète: sur le forum Webmaster Hub : Pb traitement chaîne de caractères
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
MarvinLeRouge
Salut,

J'ai à faire un traitement sur une chaîne de caractères : j'ai un tableau associatif contenant des variables, et je voudrais remplacer toutes les occurences de ces variables dans mon texte (qui sont sous une forme genre ***nomDeVariable***) par leur valeur dans ce tableau.

J'ai pensé utiliser un preg_match_all pour trouver les occurences, puis faire une boucle sur les résultats avec un str_replace.

J'aurais bien utilisé un preg_replace, mais je ne vois pas comment lui dire de remplacer chaque occurence par la variable correspondante.

Si quelqu'un a une idée pour améliorer ça, je suis preneur.

Merci
captain_torche
Tu peux donner un aperçu du contenu de ton tableau, ainsi que de ton texte ?
jcaron
Moi et le php ça fait deux, mais je dirais pgrep_replace("/\*\*\* (\w)+ \*\*\*/e","\$tableau_assoc['\\1']",$text); non?

Voir http://www.php.net/manual/fr/function.preg-replace.php pour les détails. L'option "e" à la fin de la chaîne à remplacer indique que la chaîne de remplacement sera interprétée comme du code PHP.

Sinon ça doit être possible en séparant ton tableau associatif en deux tableaux, l'un avec les clefs (avec les *** autour), l'autre avec les valeurs, et passer les deux tables à pgrep_replace qui va remplacer chaque chaîne qui est dans le premier tableau par la chaîne au même index dans le tableau de destination.

Jacques.
MarvinLeRouge
Salut,

Je pense même avoir trouvé nettement plus simple :
un bon vieux str_replace, avec le tableau des clés en param 1 et le tableau des valeurs en param 2. A tester.
Kioob
CITATION
un bon vieux str_replace, avec le tableau des clés en param 1 et le tableau des valeurs en param 2. A tester.


Ou directement strtr() dans ce cas.
MarvinLeRouge
Euh non je ne veux pas changer des caractères, mais bien des chaînes.
Kioob
Oui, regarde l'exemple 2 de la doc.

Ca fait partie de la "magie de PHP", une fonction qui a un nom très explicite et un comportement fortement différent en fonction des paramètres... super simple à débuger.
MarvinLeRouge
Ah ouais, j'adore les fonctions avec des descriptions super explicites smile.gif
Remplace des caractères dans une chaîne my foot !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.