我有一个我保存在数据库中的电子邮件模板。我的问题是消息的某些部分是可变的,意味着这些数据来自当前的用户数据。 例如,我的模板是
$message="This is test for $username. I am sending mail to $email."
此处$username
和$email
来自当前用户,并且因用户而异。
所以问题是如何将它保存在数据库中,以便我以后可以在php页面上将其用作变量。
任何人有任何想法请帮助我。您的帮助将不胜感激。
答案 0 :(得分:3)
如果您确实需要将整个模板存储在数据库中,可以使用自己创建的常量保存它,例如[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 . '.';
答案 1 :(得分:2)
您可以使用以下内容:
$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;
答案 2 :(得分:1)
字符串中的变量不会自动计算为变量,因为您要将其添加到php范围中。您需要对字符串进行评估才能替换变量:
$username = 'test';
$email = 'test@test.com';
$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 test@test.com.