我正在尝试自动标记检测并转换为超链接。问题是,必须在字符串运行后执行以下操作:
htmlspecialchars($string, ENT_QUOTES, "UTF-8");
现在,即'
符号变为'
。标签的格式为#[a-Z0-9\-\_]
因此,由于#39
部分,脚本将编码的特殊字符视为标记。
我如何与preg_match
匹配,以便它不会将#
标记前面的&
标记为标记?
谢谢!
答案 0 :(得分:2)
您必须使用 lookbehind assertion 来检查字符串是否前面有&
:
试试这个:
"/(?<!&)#[\w-]+/"
(?<!&)
只有#
不在&
之前才会匹配。
\w
部分与[a-zA-Z0-9_]
匹配
您可能还想检查标记前面是空格还是字符串的开头:
"/(:?^|\s)#[\w-]+/"
答案 1 :(得分:0)