Page 1 sur 1

Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 12:34
par celionor
Bonjour,

J'ai une liste de messages pré-définis dans une table MySQL, avec, dans le corps de chaque message, des variables (définies par un %) à remplacer par des valeurs à définir.

Ex:
Votre prénom : %prenom
Votre nom : %nom

avec %prenom = $data['prenom'];

J'aimerai remplacer les variables commençant par % par des valeurs. Comment dois-je procéder ?

Merci,
Florent

Re: Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 12:38
par stealth35
hello, tu peux faire ca avec preg_replace et l'option e ou mieux avec preg_replace_callback
$data['prenom'] = 'truc';
$data['nom']	= 'machin';

$text = <<<HEREDOC
Votre prénom : %prenom
Votre nom : %nom
HEREDOC;

echo preg_replace('/%(\w+)/e', '$data[\'$1\']', $text);

Re: Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 13:48
par celionor
Salut et merci de la réponse rapide,

Alors on va compliquer un peu la chose, car dans mon premier message, j'ai simplifier pour me faire comprendre.
J'ai testé ton code, il m'a l'air en effet de fonctionner, sauf que j'ai des valeurs qui ne correspondent pas aux variables, ce qui pose problème dans ton code.
Ex :
Votre prénom : %mon-prenom
avec %mon-prenom = $data['prenom']

J'avais essayé la chose suivante :

Code : Tout sélectionner

<?php // Valeur à définir define("%mon-prenom", $data_client['prenom']); // Texte du message avec les valeurs % à remplacer echo $data_mail['texte']; ?>
Mais la fonction define(); n'a pas l'air de fonctionner sur une variable. Faut-il que je le définisse autrement où faut-il que j'utilise des preg_replace(); ?

Comme ça, ça fonctionne :

Code : Tout sélectionner

<?php // Texte du message avec les valeurs % à remplace $text = $data_mail['texte']; // Valeur à définir $text = preg_replace('`(%mon-prenom)`', $data['prenom'], $text); $text = preg_replace('`(%mon-nom)`', $data['nom'], $text); // Texte formaté echo $text; ?>

Re: Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 14:21
par stealth35
je te déconseille de mettre les guillemet oblique pour les regexp
http://php.net/manual/fr/language.opera ... cution.php

Re: Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 15:00
par Mazarini
Bonjour,
define("%mon-prenom", $data_client['prenom']);
A mon avis le % n'est pas autorisé dans le nom des constantes.
Edit pas sur pour le - non plus

Re: Remplacer des variables définies par des valeurs

Posté : 09 févr. 2011, 20:33
par celionor
A mon avis le % n'est pas autorisé dans le nom des constantes.
Edit pas sur pour le - non plus
Bon à savoir ;)
Merci