PHP MySQL如何使用占位符

时间:2015-12-19 15:53:46

标签: php mysql

我正在使用PHP构建电子邮件模板系统。这个想法是可以使用相同的系统发送各种自动电子邮件,例如当人们加入网站等时。每封电子邮件的内容都保存在MySQL数据库中,我使用占位符来表示动态元素,如姓名,电子邮件占位符采用名称前后两个下划线的形式:__name__,(注意,stackoverflow标记可能会转换下划线以使占位符名称在此处以粗体显示),并且单独的字段与占位符匹配它代表的变量,例如:

__name__=[($user['name'])], __email=[($user['email'])]

当我构建电子邮件时,系统会占用占位符并将它们保存在关联数组中:

$placeholders( '__name__' => $user['name'], '__email__' => $user['email'] ); 

这正是数组的显示方式。我使用explode来删除封闭的[()]括号。

我可以遍历电子邮件内容,并使用Parsedownpreg_replace将占位符与相应的变量交换,例如:

$body = 'Dear __name__, your email is __email__' 

变为:

$body = 'Dear $user['name'], your email is $user['email']

但是,这正是内容在实际发送的最终电子邮件中的显示方式。这些变量的值(我之前在数组$ user中成功建立)没有出现在最终文本中,例如:

'Dear John, your email is john@smith.com'.

在发送电子邮件之前,如何让PHP用变量值替换变量?

PS我也尝试过:

'Dear ' . $user['name'] . 'Your email is ' . $user['email'] 

(即使用倒置的逗号和一段时间来区分变量与文本的其余部分)但无济于事。它看起来像: 亲爱的默瑟先生,

感谢您在mercermania.com上注册您的详细信息。

请立即验证您的电子邮件地址

我们现在需要验证您注册时提供的电子邮件地址确实属于您。请点击以下链接:

http://www.mercermania.com/activation/?x=' 。 $ user_info ['电子邮件']。 '&安培; Y =' 。 $ user_info ['有效']。 '

我以前做过,所以知道可以做到但是对于我的生活我不记得怎么做了!

非常感谢任何帮助。

PS我正在使用PHP Mail :: factory发送电子邮件,并且实际发送了一封电子邮件,并且已收到,因此这不是问题。

0 个答案:

没有答案