我有一个特殊情况,我正在进行短语替换,我需要保留我的单词边界,并省略在标题标记(<h1><h2><h3><h4><h5>
)内的内容上发生的任何操作。
这是我到目前为止所得到的内容,并且如果它们落在&gt;后面,则会忽略它们。或者 - ,它也可以防止编辑URL和超链接。
preg_replace("/[^\>\.-]\b{$keywords}\b/i"," <a href='$url' target='$target'>$keywords</a>
所以正则表达式需要:
有任何建议吗?
答案 0 :(得分:1)
建议:
\b
s;在关键字之前和之后尝试[^-a-zA-Z\/>]
的某些变体。 (我假设您的意思是避免使用斜杠来防范URL - 我认为它是_
并不强调\b
,因为它们被视为字母数字;使用{{1}在字符类中会出现同样的问题)。答案 1 :(得分:0)
我找到了一个带有前瞻头标的解决方案。
/(?<!_)(?<!-)\b$keywords[$key]\b(?!(.*?)\<\/h\d>)/i
我尝试使用后面的功能找到alt和title标签中的文本解决方案但是在不破坏正则表达式的情况下无法使其工作。似乎每次我在后面使用。+或a(。*?)时都会破坏它。