我正在编写一个 PHP/MYSQL SaaS 应用程序,目前正在研究电子邮件功能(使用 Swift)。我计划将电子邮件模板保存到 MySQL 数据库(每个租户都可以自定义它们)。但是,我还需要在模板中包含动态数据(“合并标签”,如名字和姓氏)。我尝试简单地存储{$test}在数据库中,但这没有用。在将数据从 MySQL 中提取以将变量合并到文本中之后,我需要做些什么,然后再将其传递给 Swift?
小智 5
我不熟悉 Swift 库,但快速浏览文档并没有发现有关解析消息以插入变量的任何信息。这意味着您可能需要自己执行此操作。
您可能会这样做的一种方法是提出您自己的(任意)语法来保存消息中变量的位置。例如,您可能想要使用{%VAR_NAME%}什么。
所以你可以保存你的模板,比如:
你好{%recipient_name%},
这是为了通知您发票 #{%invoice_num%} 自 {%invoice_date%} 起可用。
谢谢你,{%sender_name%}
然后,假设模板存储在 中$email_body,您可以进行字符串替换(或者str_replace(),或者类似的东西preg_replace()。对于这么简单的事情,我不建议使用正则表达式搜索使事情陷入困境)。下面是一个示例,说明您可能会如何去做。您可以按照自己的意愿构建$search和$replace数组,但我只是像这样布置它以提高人类可读性。
// Original body:
$email_body = "Hello {%recipient_name%},
This is to inform you that invoice #{%invoice_num%} is available as of {%invoice_date%}.
Thank you, {%sender_name%}";
// Easily readable input values
$values = array(
'recipient_name' => $db_value['recipient_name'],
'invoice_num' => $db_value['invoice_num'],
'invoice_date' => date("Y-m-d"),
'sender_name' => $_SESSION['user_name']
);
// Break it up into the search and replace arrays
$search = array();
$replace = array();
foreach ($values AS $index => $value)
{
$search[] = "{%" . $index . "%}"; // Wrapping the text in "{%...%}"
$replace[] = $value;
}
// Do the replacement
$email_body = str_replace($search, $replace, $email_body);
Run Code Online (Sandbox Code Playgroud)
这里的主要思想是您将{%VALUE%}使用具有实际值的特定语法(例如)替换占位符。如何生成 $search 和 $replace 变量取决于您。
这将输出如下内容:
你好傅,
这是为了通知您发票 #123456 于 2017 年 5 月 19 日可用。
谢谢你,酒吧