php正則學了一些日子,抓了一些網站的數據,從而發現每次都自己寫正則重新抓很麻煩,于是就想寫一個抓取特定標簽具有特定屬性值的接口通用,直接上代碼。
//$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];}//返回值為數組 查找到的標簽內的內容
下面隨便給出一個例子
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);
輸出結果為
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正則表達式抓取某個標簽的特定屬性值的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
新聞熱點
疑難解答