使用 PHP 制作一封套用信函,其中包含来自 POST 变量的文本内容


Making a form letter with PHP with text content from a variable from the POST

我正在尝试使用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 开始为这些占位符设置数组中的值。