Remplacer des variables définies par des valeurs

celionor
Invité n'ayant pas de compte PHPfrance

09 févr. 2011, 12:34

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

ViPHP
ViPHP | 5462 Messages

09 févr. 2011, 12:38

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);

celionor
Invité n'ayant pas de compte PHPfrance

09 févr. 2011, 13:48

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; ?>

ViPHP
ViPHP | 5462 Messages

09 févr. 2011, 14:21

je te déconseille de mettre les guillemet oblique pour les regexp
http://php.net/manual/fr/language.opera ... cution.php

ViPHP
ViPHP | 2577 Messages

09 févr. 2011, 15:00

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

celionor
Invité n'ayant pas de compte PHPfrance

09 févr. 2011, 20:33

A mon avis le % n'est pas autorisé dans le nom des constantes.
Edit pas sur pour le - non plus
Bon à savoir ;)
Merci