将变量保存为MYSQL中的变量供以后使用
我有一个电子邮件模板,我将其保存在数据库中。我的问题是消息的某些部分是可变的,意味着这些数据来自当前用户数据。 比如我模板是将变量保存为MYSQL中的变量供以后使用
$message="This is test for $username. I am sending mail to $email."
这里$username
和$email
从当前用户的到来,它是从用户不同的用户。 所以问题是如何将它保存在数据库中,以便以后可以在php页面上使用它作为变量。 任何人有任何想法,请帮助我。你的帮助将不胜感激。
如果你真的需要整个模板存储在数据库中,你可以使用自己的保存创建常量例如[USERNAME],[EMAIL],然后在php脚本上使用str_replace()。
$messageTemplate = 'This is test for [USERNAME]. I am sending mail to [EMAIL].';
$message = str_replace(array('[USERNAME]', '[EMAIL]'), array($username, $email), $messageTemplate);
但你也可以把这个字符串,并与数据库变量串连,如下所示:
$message = 'This is test for ' . $username . '. I am sending mail to ' . $email . '.';
字符串中的变量不会被自动评估为变量,只是因为您将它添加到您的php作用域。您需要EVAL字符串,以便将被替换的变量:
$username = 'test';
$email = '[email protected]';
$str = "This is a test for $username. I am sending mail to some person $email.";
echo $str. "\n";
// This is a test for $username. I am sending mail to some person $email.
eval("\$str = \"$str\";");
echo $str. "\n";
// This is a test for test. I am sending mail to some person [email protected]
欲了解更多信息,请参阅http://php.net/manual/en/function.eval.php
在单引号内设置的变量不会插值,除非连接。 '$ str ='这是对$ username的测试。我正在给邮件发送邮件,';'会失败。 '$ str =“这是对$ username的测试,我正在给邮件发送邮件。”;' – 2014-09-12 12:51:53
请注意,使用eval时,有人可能会注入错误的代码。 – 2014-09-12 12:55:55
非常感谢materik。有用。 – Vinie 2014-09-12 12:58:28
您可以使用这样的事情:
$input = "This is test for {username}. I am sending mail to {email}.";
$tokens = array("username" => $username, "email" => $email);
$tmp = $input;
foreach($tokens as $key => $token)
{
$tmp = str_replace("{".$key."}", $token, $tmp);
}
echo $tmp;
什么是你想保存?带有占位符的字符串或其填充值后的结果字符串?无论哪种方式,您都会将其作为任何其他字符串值写入数据库。 – David 2014-09-12 12:43:50
而不是$您可以切换到{例如{用户名},那么您可以在将来使用str_replace替代变量 – Pundit 2014-09-12 12:44:18
我想用占位符保存字符串。 – Vinie 2014-09-12 12:47:42