我有一个问题,尝试在Google和Stakoverflow上搜索,但找不到任何完美的解决方案。我正在使用phpmailer并希望让用户自定义它的正文消息。所以我通过在后端提供texarea输入框来编辑电子邮件正文文本,并且用户将使用我自己提供的php变量输入电子邮件文本。
例如正文是“亲爱的{$ username},感谢你注册。”一旦我将此输入存储到数据库中并想要在php中检索它:
$username = "ABC"; //username variable
$message = $row["message"]; //stored email body message
echo $message;
输出数据:“亲爱的{$ username},感谢您的注册。”
我希望得到这样的结论“亲爱的ABC,谢谢你的注册。”怎么可能或者有没有其他选项可以用php varialbe或定义类型吗?
大!!!现在我已经在PHP中使用str_replace函数找到了一个解决方案。这个功能真的非常有用。我尝试使用修改后的输入消息“亲爱的 user_name ,感谢您注册。”:
$username = "ABC"; //username variable
$message = $row["message"]; //stored email body message
$message_new = str_replace("user_name", $username, $message);
echo $message_new;
输出数据:“亲爱的ABC,谢谢你注册。”
答案 0 :(得分:1)
您没有得到您期望的答案,因为$row["message"]
的内容无法再次评估。这实际上是一件好事,因为用户可以使用他们想要的任何变量名称,这会产生安全威胁。
但是有一个高质量的解决方案。您应该检查PHP的模板引擎,例如Smarty和Twig。它们允许您使用占位符创建模板,例如:
Dear {{username}}, thank you for sign-up!
您可以将其存储在文件中,或让您的用户定义自己的模板。然后,模板引擎将读取模板,并使用您发送的值将这些占位符替换为实际值。
要了解在实践中如何完成此操作,请选择模板引擎并查看其文档。
答案 1 :(得分:1)
我在PHP中使用str_replace函数找到了一个解决方案。这个功能真的非常有用。我尝试使用修改后的输入消息“亲爱的 user_name ,感谢您注册。”:
$username = "ABC"; //username variable
$message = $row["message"]; //stored email body message
$message_new = str_replace("user_name", $username, $message);
echo $message_new;
输出数据:“亲爱的ABC,谢谢你注册。”