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);