今天实现文章锚文本,使用preg_replace数组替换字符串的时候发生了一下情况
$content = preg_replace(‘/netpc(括号)/’,’abc’,’测试netpc(括号)文本’);
$content返回值为Null,也并没有告诉你错误原因和位置。
最后测试得出,preg_replace在替换字符串中包括了 ()全角和半角括号同时存在的时候会出错
使用addcslashes转义还不行,查询文档最后发现用quotemeta转义元字符集后替换就正常了。
函数说明:https://www.php.net/manual/zh/function.quotemeta.php
返回 在下面这些特殊字符前加 反斜线(\) 转义后的字符串。 这些特殊字符包含:
. \ + * ? [ ^ ] ( $ )