我们中有一些电子邮件模板,一个非常基本的模板如下所示:
<p> Hi <?= $name?>,</p></br>
<p> A new task has been assigned to you. Please check your tasks list. </p>
如果要翻译基本文本,我们需要允许用户插入自己的文本。
最简单的方法显然是为每个用户存储两个字符串/翻译:
"Hi"
"A new task has been assigned to you. Please check your tasks list."
然后只是选择它们,但是当用户仅想让电子邮件说:“"New task has been assigned"
没有任何好处”时,就会出现问题。
问题是:我们如何允许用户存储包括html标记和php变量名称的字符串?
所有模板都很简短,最多包含3个php变量。
如果还有其他有价值的信息可以提供,请问一下。
如果要翻译基本文本,我们需要允许用户插入自己的文本。
..我们决定将它们存储在数据库中
简单的解决方案。
在前端,允许用户创建自己的电子邮件文本,并存储在db中,例如:
<p> Hi {{name}},</p></br>
<p> A new task has been assigned to you. Please check your tasks list. </p>
<hr>
<p>Best regards,</p>
<p>{{admin}}</p>
<p>{{email}}</p>
如您所见,这里是{{name}},{{admin}},{{email}}作为变量占位符。
在渲染电子邮件或HTML页面之前的后端,使用str_replace()php函数查找变量占位符并替换为其他值:
$tpl = $user->template; // load from db
$tpl = str_replace("{{name}}", $user->name, $tpl);
$tpl = str_replace("{{admin}}", $admin->name, $tpl);
$tpl = str_replace("{{email}}", $admin->email, $tpl);
echo $tmpl;
或drmonkeyninja回答的问题
$tpl = str_replace(
[
'{{name}}',
'{{admin}}',
'{{email}}'
],
[
$user->name,
$admin->name,
$admin->email
],
$user->template // load from db
);
echo $tpl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句