我正在尝试使用PHP制作套用信函。我有一个视图,其中包含一些预填充文本的文本区域。文字就像一封信:亲爱的某某等。
有几个地方我需要从数据库中填写特定的动态数据,但除此之外,我需要让用户根据需要更改电子邮件其他部分的措辞。我正在考虑放置一个随机字符序列来标记我要插入新值的每个位置。
所以我将表单提交到 PHP 页面,然后将文本拉出到一个字符串变量中。当我准备通过电子邮件发送它时,我需要确保这些占位符已更新。如何将字符串变量的内容替换为变量的值?
编辑 - 示例。这是我目前在处理表单操作的 PHP 文件中的字符串变量中的内容。
嗨 %@
我希望你一切顺利。我想提醒你,在%@天内你需要做点什么。
作为一个团队,我们目前处于%@%。
我用来做的是这样的。
$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);
我希望这会非常清楚地表明,你如何解决这个问题。
假设字母文本是这样的:
亲爱的%姓名%!我来自%城市%。让我们转到 %目标%。
你的代码应该是这样的:
$letter_text = $_POST["letter_text"];
foreach(array("name", "city", "destination") as $var) {
$letter_text = str_replace("%".$var."%", $_POST[$var], $letter_text);
}
我已经多次使用以下内容。希望这能解决您正在寻找的问题。
<?php
$content = "Hi #user,
Thanks for registering. Your username is #username.
"
$trans = array("#user" => "ABC", "#username"=> "XYZ");
echo strtr($content, $trans);
?>
我认为这是您可以轻松使用的。只需将内容变量更改为字符串中的任何内容,并将占位符(以#开头)更改为占位符即可。无论您需要什么,$trans从数据库或 $_POST 开始为这些占位符设置数组中的值。