我有以下短代码:
亲爱的
{{name}}
,邀请您参加以下活动:
{{event}}
问候,
{{author}}
我有一个来自数据库的数组: $data
哪里:
$data['name'] = 'John Doe';
$data['event'] = 'Party yay!';
$data['author'] = 'Kehke Lunga';
我期望的输出:
尊敬的John Doe,
您受邀参加以下活动:派对!
问候,Kehke Lunga
另外,我还想执行类似的操作{{firstname||lastname}}
,即要么检查是否$data['firstname']
设置了键,否则应使用$data['lastname']
。但是,这是稍后阶段。
现在,我只想知道如何在2个花括号之间匹配文本。
谢谢
对于第二项操作,您可能需要这样:
$str = "Dear {{name||email}}, You are being invited for the following event: {{event}}. Regards, {{author}}";
// $data['name'] = 'John Doe';
$data['email'] = '[email protected]';
$data['event'] = 'Party yay!';
$data['author'] = 'Kehke Lunga';
$pattern = '/{{(.*?)[\|\|.*?]?}}/';
$replace = preg_replace_callback($pattern, function($match) use ($data)
{
$match = explode('||',$match[1]);
return isset($data[$match[0]]) ? $data[$match[0]] : $data[$match[1]] ;
}, $str);
echo $replace;
基本上是通过编辑'$ pattern',然后在回调内部找到所需的正确逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句