PHP preg_replace无法按预期工作

时间:2016-03-19 00:54:22

标签: preg-replace str-replace

我正在尝试运行查找替换多个值,以对存储在数据库中的HTML签名执行邮件合并效果。

我可以毫无后顾之忧地取代琴弦部分,但出于某种原因它会离开“[”& “”在输出中落后。

HTML中的合并标记如下所示:[FirstName],[LastName]

原始HTML看起来像这样:

亲切的问候

[FirstName] [LastName]

运行mailmerge函数后,它应如下所示:

亲切的问候

John Smith

到目前为止,我已经提出了这个问题,我确信这个问题很小:

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

提前致谢

1 个答案:

答案 0 :(得分:1)

您不需要使用正则表达式处理文字字符串(无论情况如何):

return strtr($html, $authorisedMergeTags);