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好紧张哈哈哈,希望会对大家有用,也希望大家能指出代码其中的问题,测试做的不是很多~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值