ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-29 16:20:35  阅读:210  来源: 互联网

标签:php regex preg-replace negative-lookahead


参见英文答案 > 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有