【原创】PHP正则提取或者过滤网页中常见格式图片
问题场景:
PHP正则提取网页中常见格式图片比如:JPG | PNG | GIF 等
效果截图:

PHP代码:
<?php $html_code = '<a class="help-table" href="http://bbs.aliyun.com/?spm=5176.383338.201.79.DbYWv8" target="_blank"> <img id="myimage" src="//gtms02.alicdn.com/tps/i2/TB1e4XKIXXXXXaNXVXXbKcKJpXX-9 0-60.png" hover="//gtms01.alicdn.com/tps/i1/TB1QjKeIXXXXXabXXXXbKcKJpXX-90-60.png" style="width:45px;"> <span>论坛</span></a><a class="help-table" href="http://docs.aliyun.com/?spm=5176.750001 .501.6.codNbH#/pub" target="_blank"> <img src="//gtms03.alicdn.com/tps/i3/TB1Xzl.IXXXXXbrXpXXbKcKJpXX-90-60.png" hover="//gtms02.alicdn.com/tps/i2/TB1IQ1lIXXXXXblXXXXbKcKJpXX-90-60.png" style= "width:45px;"> <span>产品文档</span </a>'; $pattern = '/<img.*?src=([\'|\"].*?(\.png|\.jpg|\.gif).*?[\'|\"]).*?[\/]?>/is'; preg_match_all($pattern, $html_code, $matches); print_r($matches);
代码注解:
1. <img 这个不用多说了,图片标签的开始2. 接下来紧跟着的 .*? 是非贪婪模式,修饰其后的src, 即匹配任意字符直至寻找到最近的 src 为止
3. 接下来的一对 () 括号表示捕捉匹配项
4. [\'|\"] 表示匹配单引号或者双引号
5. 接下来紧跟着的 .*? 是非贪婪模式,修饰其后的(\.png|\.jpg|\.gif),即匹配任意字符直至寻找到最近的 .png或.jpg或.gif为止
6. 接下来紧跟着的 .*? 是非贪婪模式,修饰其后的[\'|\"], 即匹配任意字符直至寻找到最近的单引号或双引号为止
7. 接下来.*?[\/]?> 含义是首先这里的第二个?表示前面的斜杠 / 要么有要么没有, 如果匹配到斜杠,则 .*? 生效,匹配最近的斜杠 /, 否则匹配最近的 >
过滤图片
既然知道了提取,那么过滤就简单了, 使用PHP的 preg_replace() 函数替换即可, 代码如下:
<?php //省略源码...... preg_replace($pattern, "", $html_code);
版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。
用户评论:
发表评论: