阿里的短信模板中的变量配置在PHP中怎么实现?经常会有这样的需求:在页面上配置一段文字,文字中夹杂着前后端定义好的变量,然后根据不同的用户显示不同的文本内容。
比如:我们需要在前端页面上配置一个消息内容,内容中有用户的姓名、性别、年龄、手机号...等信息,这个消息内容是可以随时编辑的。
实现思路:提供一些变量配置,前后端协商好变量配置规则。编辑好的内容暂且称之为“模板”,后端通过正则匹配到模板中的变量,然后进行替换,生成真正的内容。
举个例子:
先和前端定义好一部分变量规则:name - 姓名 、age - 年龄 、phone - 手机号 ......
模板内容配置好,字符串为:尊敬的${name}你好,你的年龄为${age},你的手机号码是${phone}
代码示例:
$userData = [
'name' => '张三',
'age' => 18,
'phone' => '123456'
];
$template = '尊敬的${name}你好,你的年龄为${age},你的手机号码是${phone}';
//检查参数是否匹配
preg_match_all('/\${.*?}/', $template, $matches);
$params = $matches[0];
$values = [];
foreach ($params as $param) {
$key = str_replace(['${', '}'], '', $param);
$values[$param] = $userData[$key];
}
$content = strtr($template, $values);
最后结果为:"尊敬的张三你好,你的年龄为18,你的手机号码是123456"