php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码。
1 2 3 4 5 6 7 8 | function get_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];
}
|
下面随便给出一个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | header("Content-type: text/html; charset=utf-8");
$temp = '<ul class="noul clearfix">
<li class="w w0">
</li>
<li class="w w1 selected">
</li>
<li class="w w9">
</li>
<li class="w w2">
</li>
<li class="w w5">
</li>
<li class="w w6">
</li>
</ul>';
$result = get_tag_data($temp,"a","class","fc01");
var_dump($result);
|
输出结果为
1 | array(6) { [0]=> string(6) "首页" [1]=> string(6) "日志" [2]=> string(6) "LOFTER" [3]=> string(6) "相册" [4]=> string(6) "博友" [5]=> string(9) "关于我" }
|
查看源码可以看到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | array(6) {
[0]=>
string(6) "首页"
[1]=>
string(6) "日志"
[2]=>
string(6) "LOFTER"
[3]=>
string(6) "相册"
[4]=>
string(6) "博友"
[5]=>
string(9) "关于我"
}
|
第一次写blog好紧张哈哈哈,希望会对大家有用,也希望大家能指出代码其中的问题,测试做的不是很多~~
以上所述是小编给大家介绍的PHP正则表达式抓取某个标签的特定属性值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
原文链接:http://blog.csdn.net/caoxun03/article/details/48879573 |