【原创】PHP正则提取或者过滤网页中常见格式图片

blogdaren 2015-09-29 1评论 2569人次

问题场景

PHP正则提取网页中常见格式图片比如:JPG | PNG | GIF 等

效果截图:

33.jpg

55.png

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);


#PHP正则##提取图片##过滤图片#

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】PHP正则提取或者过滤网页中常见格式图片

用户评论:

2015-09-29 14:04
详细,不错

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting