PHP正規表示式抓取某個標籤的特定屬性值的方法

給我任何的發表於2022-03-20

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正規表示式抓取某個標籤的特定屬性值的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015106/viewspace-2877212/,如需轉載,請註明出處,否則將追究法律責任。

相關文章