如何用另一个类似于邮件合并的文本替换文本?

时间:2016-02-07 23:43:28

标签: php magento textarea array-merge

我在Magento工作,我开发了一个模块来向客户发送短信。在模块的设置中,管理员可以设置将发送给客户的消息。我试图添加一些功能,以便用我数据库中的数据替换文本。

例如,我目前有以下代码来获取文本消息正文的已保存设置:

$body = $settings['sms_notification_message'];

获取的消息如下所示:

Dear {{firstname}},

your order ({{ordernumber}}) has been shipped.
tracking#: {(trackingnumber}}

Thanks for your business!
{{storename}}

目标是让模块替换" {{}}"中的变量。与客户和商店信息。 不幸的是,在发送邮件之前,我无法弄清楚如何替换信息。它目前按原样发送。

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用 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);