PHP正则表达式抓取某个标签的特定属性值的方法

前端技术 2023/09/01 PHP

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正则表达式抓取某个标签的特定属性值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对phpstudy网站的支持!

本文地址:https://www.stayed.cn/item/1502

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。