编程语言
首页 > 编程语言> > php – preg_replace file_get_contents中不包含单词的所有链接

php – preg_replace file_get_contents中不包含单词的所有链接

作者:互联网

参见英文答案 > Regular expression to match a line that doesn’t contain a word?                                    27个
我正在将一个页面读入一个变量,我想禁用地址中不包含“remedy”一词的所有链接.到目前为止我的代码抓住了所有链接,包括“补救”.我究竟做错了什么?

$page = preg_replace('~<a href=".*?(?!remedy).*?".*?>(.*?)</a>~i', '<font color="#808080">$1</font>', $page);

– 解决方案 –

$page = preg_replace('~<a href="(.(?!remedy))*?".*?>(.*?)</a>~i', '<font color="#808080">$2</font>', $page);

解决方法:

试试〜< a href =“(.(?!补救))*?”.*?>(.*?)< / a> ~i

对于这个问题,你做错了什么:如果可能的话,正则表达式匹配,并且对于每个url(甚至包含补救措施),可以匹配’〜< a href =“.*?(?!remedy).*? “.*?>(.*?)< / a> ~i’,因为您没有指定补救措施可能不会包含在属性中的任何位置,但您指定必须有任何/什么都没有(.*?)然后是补救措施,除了那些以< a href =“补救措施”开头的网址之外,任何网址都是如此.希望有人能理解......

标签:php,regex,preg-replace,negative-lookahead
来源: https://codeday.me/bug/20190629/1327350.html