用正则表达式采集网页上的图片信息

前端之家收集整理的这篇文章主要介绍了用正则表达式采集网页上的图片信息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1 具体步骤

①使用file_get_contents()函数获取url的内容

②浏览要采集的网页的源代码,找出要提取元素的物理位置。一定要仔细分析,找准位置。

③写正则表达式,将要匹配的img元素的src部分给提取出来。正则表达式的准确性我个人感觉是最最重要的。

④使用preg_match_all()函数,其中要写上参数$matches,从它里面我们可以拿图片的地址(src)。关于这个函数的使用,一定要熟悉。

⑤我们提取的知识图片链接地址,若要向在网页上显示图片的话,还需要给这个地址套上一个<img src="">的标签,再使用echo()函数输出即可。好了,大功告成。

下面是我自己写的一个采集携程网的例子。

$url= "http://hotels.ctrip.com/hotel/guangzhou32/star3";
$fcontent= file_get_contents( $url);
$pattern="/<img\sname=\"hotelpic\"(.*)src=\"http:\/\/pic.c-ctrip.com\/common\/pic_alpha.gif\"\s_src=\"(.*)\"><im/";
preg_match_all ( $pattern,$fcontent,$matches);
foreach($matches[2] as$val){
echo"<img src=\"$val\">";   
}

2 preg_match_all()函数的使用

具体的情况可以查看PHP手册,这里我主要讲一下$matches之后的那个参数。

PREG_SET_ORDER选项:

1 $matches成为一个2维数组,

[0]关于第一次匹配上的记录信息,$matches[0][0]为匹配的全部字符串,然后才是$matches[0][1]$matches[0][2]$matches[0][3]一次分别为各部分匹配的子记录

[1]就是第二次匹配上的记录信息,$matches[1[0]为匹配的全部字符串,然后才是$matches[1][1]$matches[1][2]$matches[1][3]一次分别为各部分匹配的子记录

[2]以此类推

PREG_PATTERN_ORDER选项(默认):

结果排序为$matches[0]保存了完整模式的所有匹配,$matches[1]保存了第一个子组的所有匹配,一次类推。

关于子组的数目,通过程序调试发现,应该与(正则表达式)是一一对应的。每多增加一个带括号的正则表达式,$matches就会多一个分组。

猜你在找的正则表达式相关文章