1

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

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

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

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

你好 %@

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

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

4

3 回答 3

2

假设字母文本是这样的:

亲爱的%name%!我来自%city%。我们去%destination%。

你的代码应该是这样的:

$letter_text = $_POST["letter_text"];
foreach(array("name", "city", "destination") as $var) {
  $letter_text = str_replace("%".$var."%", $_POST[$var], $letter_text);
}
于 2012-05-26T05:51:44.573 回答
2

我已经使用了以下几次。希望这可以解决您正在寻找的问题。

<?php

$content = "Hi #user, 
Thanks for registering. Your username is #username.
"

$trans = array("#user" => "ABC", "#username"=> "XYZ");

echo strtr($content, $trans);

?>

我认为这是您可以轻松使用的。只需将内容变量更改为您的字符串,并将占位符(以 # 开头)更改为您的占位符。从数据库或 $_POST 中为这些占位符设置 $trans 数组中的值,无论您需要什么。

于 2012-05-26T05:57:32.433 回答
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);

我希望这将非常清楚地说明您如何解决这个问题。

于 2012-05-26T05:58:33.010 回答