使用PHP制作一个带有来自POST变量的文本内容的套用信函

时间:2012-05-26 05:46:18

标签: php forms parsing

我正在尝试使用PHP制作一份套用信函。我有一个视图,其文本区域有一些预先填充的文本。文字就像一封信:亲爱的,等等。

我需要从db中填写特定的动态数据,但我需要让用户根据需要更改电子邮件其他部分的措辞。我正在考虑使用随机字符序列来标记我要插入新值的每个地方。

所以我将表单提交到PHP页面,然后将文本拉出到字符串变量中。当我准备通过电子邮件发送时,我需要确保更新这些占位符。如何用变量的值替换字符串变量的内容?

编辑 - 示例。这就是我目前在PHP文件中处理表单操作的字符串变量。

嗨%@

我希望你做得好。我想提醒你,在%@ days你需要做点什么。

作为一个团队,我们目前处于%@%。

3 个答案:

答案 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);

我希望这会非常清楚,你将如何解决这个问题。