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