如何使用MySQL数据库中的PHP变量名存储和检索字符串组合?

时间:2014-01-05 14:23:14

标签: php mysql variables

我有一个问题,尝试在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,谢谢你注册。”

2 个答案:

答案 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,谢谢你注册。”