Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

Posté

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.

Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...