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