PHP preg_replace 未按预期工作
PHP preg_replace not working as expected
我正在尝试 运行 查找替换多个值以对数据库中存储的 HTML 签名进行邮件合并。
我可以毫无顾虑地替换字符串部分,但由于某种原因,它在输出中留下了“[”&“]”。
HTML 中的合并标签如下所示:[FirstName]、[LastName]
原 HTML 看起来像这样:
亲切问候
[名字] [姓氏]
运行启用邮件合并功能后,它应该如下所示:
亲切问候
约翰·史密斯
这是我到目前为止所想出的,我确定问题很小:
public function merge_user_signature() {
$user = $this->get_user_by_id();
//spit_out($user);
$authorisedMergeTags = array (
"[FirstName]" => $user->firstName,
"[LastName]" => $user->lastName
);
$keys = array_keys($authorisedMergeTags);
$values = array_values($authorisedMergeTags);
$html = $this->get_user_signature();
$mergedSignature = preg_replace($keys, array_values($authorisedMergeTags), $html);
return $mergedSignature;
}
提前致谢
您不需要使用正则表达式来处理文字字符串(无论什么情况):
return strtr($html, $authorisedMergeTags);
我正在尝试 运行 查找替换多个值以对数据库中存储的 HTML 签名进行邮件合并。
我可以毫无顾虑地替换字符串部分,但由于某种原因,它在输出中留下了“[”&“]”。
HTML 中的合并标签如下所示:[FirstName]、[LastName]
原 HTML 看起来像这样:
亲切问候
[名字] [姓氏]
运行启用邮件合并功能后,它应该如下所示:
亲切问候
约翰·史密斯
这是我到目前为止所想出的,我确定问题很小:
public function merge_user_signature() {
$user = $this->get_user_by_id();
//spit_out($user);
$authorisedMergeTags = array (
"[FirstName]" => $user->firstName,
"[LastName]" => $user->lastName
);
$keys = array_keys($authorisedMergeTags);
$values = array_values($authorisedMergeTags);
$html = $this->get_user_signature();
$mergedSignature = preg_replace($keys, array_values($authorisedMergeTags), $html);
return $mergedSignature;
}
提前致谢
您不需要使用正则表达式来处理文字字符串(无论什么情况):
return strtr($html, $authorisedMergeTags);