我正在尝试使用PHP制作一份套用信函。我有一个视图,其文本区域有一些预先填充的文本。文字就像一封信:亲爱的,等等。
我需要从db中填写特定的动态数据,但我需要让用户根据需要更改电子邮件其他部分的措辞。我正在考虑使用随机字符序列来标记我要插入新值的每个地方。
所以我将表单提交到PHP页面,然后将文本拉出到字符串变量中。当我准备通过电子邮件发送时,我需要确保更新这些占位符。如何用变量的值替换字符串变量的内容?
编辑 - 示例。这就是我目前在PHP文件中处理表单操作的字符串变量。
嗨%@
我希望你做得好。我想提醒你,在%@ days你需要做点什么。
作为一个团队,我们目前处于%@%。
答案 0 :(得分:2)
假设信件文字是这样的:
亲爱的%名称%!我来自%city%。我们去%destination%。
您的代码应该是这样的:
$letter_text = $_POST["letter_text"];
foreach(array("name", "city", "destination") as $var) {
$letter_text = str_replace("%".$var."%", $_POST[$var], $letter_text);
}
答案 1 :(得分:2)
我已经使用了以下几次。希望这能解决你所寻找的问题。
<?php
$content = "Hi #user,
Thanks for registering. Your username is #username.
"
$trans = array("#user" => "ABC", "#username"=> "XYZ");
echo strtr($content, $trans);
?>
我认为这是你可以轻松使用的。只需将内容变量更改为您的字符串是什么,将占位符(以#开头)更改为占位符。为数据库中的这些占位符设置$ trans数组中的值,或者根据需要设置$ _POST中的值。
答案 2 :(得分:2)
我用来做的事情如下。
$email_text = "Hello ###user###,
You have a new Event on ###date### at ###time### for ###hours### hour.
Please let me know if you are attending.
Have Fun.
###site###";
$email_text = str_replace('###user###',$username,$email_text);
$email_text = str_replace('###date###',date('M dS, Y', strtotime($date)),$email_text);
$email_text = str_replace('###time###',$time,$email_text);
$email_text = str_replace('###hours###',$hours,$email_text);
$email_text = str_replace('###site###',$site,$email_text);
我希望这会非常清楚,你将如何解决这个问题。