Ma question est de savoir si oui ou non ce que j'essaie de faire est même possible. Je suis soit en train de faire quelque chose de mal, soit je rêve de trop gros ... (Insérer un disclaimer de concepteur php non professionnel ici). Je crée un système d'emailing automatique. J'ai la mise en page de mon email stocké dans un fichier texte. Les informations que je voulais écrire dynamiquement sont représentées par ce que j'appelle des étiquettes (c'est-à-dire [DATE], [CUSTNAME], [MESSAGE] ...).Quelle est une alternative (ou la bonne façon) d'appeler une fonction PHP avec str_replace() (Tout contenu dans une fonction)?
Lorsqu'un email est créé et livré, les variables sont passées à une fonction de ma page d'index, j'inclue simplement le fichier texte en remplaçant mes balises par du contenu dynamique. Cela fonctionne magnifiquement pour moi, jusqu'à ce que je voulais renforcer le contenu de la newsletter. Maintenant, je veux ajouter dans une section qui est appelée à partir d'une fonction indépendante. Cela a fait que ma fonction Email affiche le contenu de la fonction appelée 3 fois au lieu de terminer la fonction de prise de vue et de redirection si nécessaire.
Mon code (contenu à l'intérieur d'une fonction) avant la mise à jour (travail pour moi):
$EmailBodyTEXT = addslashes($EmailBody);
$EmailBody =
str_replace('[YEAR]', date(Y),
str_replace('[SUBJECT]', $EmailSubject,
str_replace('[DATE]', date('l, F j, Y'),
str_replace('[MESSAGE]', $EmailBody, file_get_contents($url . 'newsletter_BLANK.txt')))));
Mon code après la mise à jour (échec):
$EmailBodyTEXT = addslashes($EmailBody);
$EmailBody =
str_replace('[YEAR]', date(Y),
str_replace('[SUBJECT]', $EmailSubject,
str_replace('[DATE]', date('l, F j, Y'),
str_replace('[MESSAGE]', $EmailBody,
str_replace('[PHOTOSTREAM]', PhotoStream(CUST), file_get_contents($url . 'newsletter_BLANK.txt'))))));
Pour ce qu'il vaut la peine, j'ai essayé pour 'charger' la deuxième fonction dans une variable $ et remplacé l'appel de fonction avec la variable, exactement le même résultat, comme je l'avais prévu.
Comment dois-je appeler cette fonction pour ne pas «exécuter» sur place, mais continuer avec le processus de la fonction contenant, qui transmettrait ce contenu dans l'email en cours de création et de livraison? Suis-je simplement incorrect en pensant qu'il existe un moyen de charger une fonction à partir du processus str_replace? Existe-t-il une manière plus évidente d'essayer de faire ceci (fondamentalement une fonction de fusion et publipostage)?
S'il vous plaît laissez-moi savoir vos pensées et si plus de code est nécessaire de moi.
Voici le Photostream():
function PhotoStream($DispTo) {
global $url, $uri, $urp, $locurl;
if(empty($DispTo)) { echo 'unconfigured'; continue; } else {
if($DispTo == 'CUST') { $DispTo = urlencode('$redacted'); } else { $DispTo = '$redacted'; }
}
if($getPics = mysql_query("SELECT pid, px, title FROM photos ORDER BY pubdate DESC LIMIT 6")) {
echo '<fieldset><div id="wrapNL">';
while($gPics = mysql_fetch_array($getPics)) {
$pid = $gPics{'pid'};
$pex = $gPics{'px'};
$ptl = $gPics{'title'};
echo '<div id="pthumbs"><a href="' . $uri . $DispTo . '&PID=' . $pid . $locurl . '">';
echo '<img src="' . $urp . 'uploads/' . $pid . '.' . $pex . '" alt="' . $ptl . '" title="' . $ptl . '">';
echo '</a></div>';
}
echo '</div></fieldset>';
}
}
Que fait votre fonction 'PhotoStream'? Est-ce que ça fait écho à quelque chose, ou le renvoyer? – rickdenhaan
Vous pouvez simplement passer des tableaux aux 1er et 2e paramètres de 'str_replace' au lieu de chaîner les appels' str_replace'. Par exemple: 'str_replace (array ('[YEAR]', '[SUBJECT]'), array (date ('Y'), $ EmailSubject), $ EmailBody)'. – ccKep
J'ai ajouté le PhotoStream(). ça fait écho. – BJC