Newsletter Dynamique

5 réponses
AuteurMessage

ddpetit |
Modérateur

Photo de ddpetit

Inscrit le : 03/05/2006

# Le 07/09/2008 à 10:59

Bonjour à tous,

Je suis actuellement en train de faire une newsletter qui remplace [champ] par la variable en question pour le membre .

Voici à quoi ressemble la fonction qui s'occupe de gérer cela :

<?php echo preg_replace("'\[(.+)\]'e", "\$membre->$1", $messageAEnvoyer); ?>

Si je fais : Bonjour [nom] il me remplace bien le nom par le nom du membre.

Par contre : Bonjour [nom] de la société [societe] ne marche pas puisqu'il va trouver 3 occurences à remplacer : [nom], [nom] de la société [societe] et [societe].

Je ne vois pas du tout comment faire pour éviter cela

(Message édité le 07-09-2008 à 11h04 par ddpetit)

Loccasion.com - Vente de voitures d'occasionOuvrir dans une nouvelle fenetre - Mandataire AutoOuvrir dans une nouvelle fenetre

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 07/09/2008 à 11:20

et un simple str_replace ?

@+ Jean-Philippe

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 07/09/2008 à 12:02

Hello,

à priori ce serait ton expression régulière qui ne colle pas, trop "gourmande".

Solution n°1, ne pas accepter n'importe quoi entre tes crochets :

<?php echo preg_replace( '#\\[([^\\]])\\]#e', '$membre->$1', $messageAEnvoyer); ?>


Solution n°2, inverser le facteur de "gourmandise" :
<?php echo preg_replace( '#\\[(.+])\\]#eU', '$membre->$1', $messageAEnvoyer); ?>


Solution n°3, comme indiqué par flush un str_replace avec de simples tableaux en entrée serait certainement tout aussi efficace... et plus simple à maintenir.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

ddpetit | Damien
Modérateur

Photo de ddpetit

Inscrit le : 03/05/2006

# Le 07/09/2008 à 13:15

Merci beaucoup pour vos réponses Flush et Bool.
Voici la solution que j'ai adopté :

Je crée le tableau des remplacements à partir des données du membre :

function getArrayWithUser(UserEntity $user)
{
$tabUser = array();

foreach($user as $nom => $valeur)
{
$tabUser['['.$nom.']'] = $valeur;
}

return $tabUser;
}

J'appelle la fonction :
$tabModif = getArrayWithUser($membre);


Puis je fais un str_replace :
str_replace(array_keys($tabModif), $tabModif, $messageAEnvoyer);

Loccasion.com - Vente de voitures d'occasionOuvrir dans une nouvelle fenetre - Mandataire AutoOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 07/09/2008 à 20:49

On sens bien l'esprit tordu enseigné par les profs là

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

ddpetit | Damien
Modérateur

Photo de ddpetit

Inscrit le : 03/05/2006

# Le 07/09/2008 à 20:52

Pour le moment, on peut dire que je suis autodidacte, je n'ai pas encore de cours de prog (juste 2 mois d'expérience dans une SSII, je ne suis qu'en terminale).

J'ai utilisé ce système et plus particulièrement la fonction pour deux choses : la newsletter est créée via l'espace admin et je fais une prévisualisation avec des données que je stocke en session (donc la fonction reste la meme pour la prévisualisation que lors du réel envoi), mais aussi parce que le but est lors d'une modification de changer le moins de code possible à l'intérieur même des pages mais directement dans les classes (ça évite de perdre trop de temps).

Voilà

Loccasion.com - Vente de voitures d'occasionOuvrir dans une nouvelle fenetre - Mandataire AutoOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 8:34:24 | Généré en 5.51ms | Contacts | Mentions légales |