php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码。
1
2
3
4
5
6
7
8
|
//$html-被查找的字符串 $tag-被查找的标签 $attr-被查找的属性名 $value-被查找的属性值 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" > <a class = "i i0 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/" >首页</a> </li> <li class = "w w1 selected" > <a class = "i i1 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/blog/" >日志</a> </li> <li class = "w w9" > <a class = "i i9 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/loftarchive/" >LOFTER</a> </li> <li class = "w w2" > <a class = "i i2 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/album/" >相册</a> </li> <li class = "w w5" > <a class = "i i5 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/friends/" >博友</a> </li> <li class = "w w6" > <a class = "i i6 fc01 h" hidefocus= "true" href= "http://phpway.blog.163.com/profile/" >关于我</a> </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