如何从MySQL数据库中存储和检索带有PHP变量名的字符串mix?

如何从MySQL数据库中存储和检索带有PHP变量名的字符串mix?,php,mysql,variables,Php,Mysql,Variables,我有一个问题,试着在谷歌和Stakoverflow上搜索,但找不到任何完美的解决方案。我正在使用phpmailer,希望让用户自定义它的正文消息。因此,我在后端提供了一个texarea输入框,用户可以在其中使用我自己提供的php变量输入电子邮件文本,从而提供了编辑电子邮件正文文本的选项 例如,正文文本是“亲爱的{$username},感谢您的注册。”。一旦我将此输入存储到数据库并希望在php中检索此输入: $username = "ABC"; //username variable $messa

我有一个问题,试着在谷歌和Stakoverflow上搜索,但找不到任何完美的解决方案。我正在使用phpmailer,希望让用户自定义它的正文消息。因此,我在后端提供了一个texarea输入框,用户可以在其中使用我自己提供的php变量输入电子邮件文本,从而提供了编辑电子邮件正文文本的选项

例如,正文文本是“亲爱的{$username},感谢您的注册。”。一旦我将此输入存储到数据库并希望在php中检索此输入:

$username = "ABC"; //username variable
$message = $row["message"]; //stored email body message
echo $message;
输出数据:“亲爱的{$username},感谢您的注册。”

我想这样写:“亲爱的ABC,谢谢你的注册。”。这是怎么可能的,或者我可以在php变量或定义类型中使用它吗

太好了!!!现在我在PHP中找到了一个带有str_replace函数的解决方案。这个功能真的很有帮助。我已尝试使用修改过的输入消息“亲爱的用户名,感谢您的注册。”


输出数据:“亲爱的ABC,感谢您的注册。”

您没有得到预期的答案,因为
$row[“message”]
的内容不会再次得到评估。这实际上是一件好事,因为用户可以使用他们想要的任何变量名,这会造成安全威胁

不过,有一个高质量的解决方案。您应该查看PHP的模板引擎,例如Smarty和Twig。它们允许您使用占位符创建模板,例如:

Dear {{username}}, thank you for sign-up!
可以将其存储在文件中,也可以让用户定义自己的模板。然后,模板引擎将读取模板,并使用您发送给它的值,将这些占位符替换为实际值


要了解这在实践中是如何实现的,请选择一个模板引擎并查看其文档。

我在PHP中找到了一个带有str_replace函数的解决方案。这个功能真的很有帮助。我已尝试使用修改过的输入消息“亲爱的用户名,感谢您的注册。”


输出数据:“亲爱的ABC,感谢您的注册。”

感谢hgazibara提供的建议和良好信息。但我不想使用任何模板引擎,我正在寻找好的核心PHP解决方案。然后我很抱歉,因为除了使用stru_replace的一些版本,我不知道还有什么其他方法。Eval也可以帮你,但我不推荐。
Dear {{username}}, thank you for sign-up!
$username = "ABC"; //username variable
$message = $row["message"]; //stored email body message
$message_new = str_replace("user_name", $username, $message);
echo $message_new;