如何用另一个类似于邮件合并的文本替换文本?
how to replace text with another similar to mail merge?
我在 Magento 工作,我开发了一个模块来向客户发送短信。在模块的设置中,管理员可以设置将发送给客户的消息。我正在尝试添加一个功能,允许用我的数据库中的数据替换文本。
例如,我目前有以下代码可以获取短信正文的已保存设置:
$body = $settings['sms_notification_message'];
获取的消息如下所示:
Dear {{firstname}},
your order ({{ordernumber}}) has been shipped.
tracking#: {(trackingnumber}}
Thanks for your business!
{{storename}}
目标是让模块用客户和商店信息替换“{{ }}”中的变量。
不幸的是,我无法弄清楚如何在发送消息之前让它替换信息。目前正在按原样发送。
最简单的方法是使用 str_replace,像这样:
// Set up the message
$message = <<< MESSAGE
Dear {{firstname}},
your order ({{ordernumber}}) has been shipped.
tracking#: {{trackingnumber}}
Thanks for your business!
{{storename}}
MESSAGE;
// Assign the values in an associative array
$values = [
'firstname' => 'firstnamevalue',
'ordernumber' => 'ordernumbervalue',
'trackingnumber' => 'trackingnumbervalue',
'storename' => 'storenamevalue'
];
// Create arrays $target indicating the value to change
$targets = [];
foreach ($values as $k => $v) {
$targets[] = '{{'.$k.'}}';
}
// Use str_replace to perform the substitution
echo str_replace($targets,$values,$message);
我在 Magento 工作,我开发了一个模块来向客户发送短信。在模块的设置中,管理员可以设置将发送给客户的消息。我正在尝试添加一个功能,允许用我的数据库中的数据替换文本。
例如,我目前有以下代码可以获取短信正文的已保存设置:
$body = $settings['sms_notification_message'];
获取的消息如下所示:
Dear {{firstname}},
your order ({{ordernumber}}) has been shipped.
tracking#: {(trackingnumber}}
Thanks for your business!
{{storename}}
目标是让模块用客户和商店信息替换“{{ }}”中的变量。 不幸的是,我无法弄清楚如何在发送消息之前让它替换信息。目前正在按原样发送。
最简单的方法是使用 str_replace,像这样:
// Set up the message
$message = <<< MESSAGE
Dear {{firstname}},
your order ({{ordernumber}}) has been shipped.
tracking#: {{trackingnumber}}
Thanks for your business!
{{storename}}
MESSAGE;
// Assign the values in an associative array
$values = [
'firstname' => 'firstnamevalue',
'ordernumber' => 'ordernumbervalue',
'trackingnumber' => 'trackingnumbervalue',
'storename' => 'storenamevalue'
];
// Create arrays $target indicating the value to change
$targets = [];
foreach ($values as $k => $v) {
$targets[] = '{{'.$k.'}}';
}
// Use str_replace to perform the substitution
echo str_replace($targets,$values,$message);