PHP正则表达式抓取某个标签的特定属性值的方法
php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码。
//$html-被查找的字符串$tag-被查找的标签$attr-被查找的属性名$value-被查找的属性值
functionget_tag_data($html,$tag,$attr,$value){
$regex="/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\/$tag>/is";
echo$regex."<br>";
preg_match_all($regex,$html,$matches,PREG_PATTERN_ORDER);
return$matches[1];
}
//返回值为数组查找到的标签内的内容
下面随便给出一个例子
header("Content-type:text/html;charset=utf-8");
$temp='<ulclass="noulclearfix">
<liclass="ww0">
<aclass="ii0fc01h"hidefocus="true"href="http://phpway.blog.163.com/">首页</a>
</li>
<liclass="ww1selected">
<aclass="ii1fc01h"hidefocus="true"href="http://phpway.blog.163.com/blog/">日志</a>
</li>
<liclass="ww9">
<aclass="ii9fc01h"hidefocus="true"href="http://phpway.blog.163.com/loftarchive/">LOFTER</a>
</li>
<liclass="ww2">
<aclass="ii2fc01h"hidefocus="true"href="http://phpway.blog.163.com/album/">相册</a>
</li>
<liclass="ww5">
<aclass="ii5fc01h"hidefocus="true"href="http://phpway.blog.163.com/friends/">博友</a>
</li>
<liclass="ww6">
<aclass="ii6fc01h"hidefocus="true"href="http://phpway.blog.163.com/profile/">关于我</a>
</li>
</ul>';
$result=get_tag_data($temp,"a","class","fc01");
var_dump($result);
输出结果为
array(6){[0]=>string(6)"首页"[1]=>string(6)"日志"[2]=>string(6)"LOFTER"[3]=>string(6)"相册"[4]=>string(6)"博友"[5]=>string(9)"关于我"}
查看源码可以看到
array(6){
[0]=>
string(6)"首页"
[1]=>
string(6)"日志"
[2]=>
string(6)"LOFTER"
[3]=>
string(6)"相册"
[4]=>
string(6)"博友"
[5]=>
string(9)"关于我"
}
第一次写blog好紧张哈哈哈,希望会对大家有用,也希望大家能指出代码其中的问题,测试做的不是很多~~
以上所述是小编给大家介绍的PHP正则表达式抓取某个标签的特定属性值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!