PHP 正则表达式不匹配`\[`

Primus202

我正在尝试编写一个正则表达式来转换\[#twitter:1234\][#twitter:1234]ie 取消转义特定标签(如 Twitter、视频等)的方括号。我编写了我的表达式并在Regex101PHPLiveRegex对其进行了测试,它看起来不错,但仍然无法获得在我的运行时匹配。我的实际实现代码是:

$content = preg_replace( "/\\\[#((?:twitter|video|instagram|cneembed):.*?)\\\]/i", "[#$1]", $content );

如果有人知道为什么表达式不起作用,您的指导将不胜感激。我通常很擅长这些东西,但我觉得我对这个东西视而不见。我很确定问题是我如何转义我的反斜杠,因为我可以轻松地使表达式匹配[#twitter:1234\]而不是前导斜杠。谢谢!

巴马

问题是反斜杠既是字符串的转义字符,也是正则表达式的转义字符,因此您需要将所有反斜杠加倍以使它们传递到正则表达式引擎。

$content = preg_replace( "/\\\\\\[#((?:twitter|video|instagram|cneembed):.*?)\\\\\\]/i", "[#$1]", $content );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章