<a class="aavv" target="_blank" href="/dsa/asdas">dsdsadsa</a>
怎么用正则preg_match_all 获得href和text内容?
很急,谢谢大家了

解决方案 »

  1.   

    <?php
    // \\2 是一个逆向引用的例子,其在 PCRE 中的含义是
    // 必须匹配正则表达式本身中第二组括号内的内容,本例中
    // 就是 ([\w]+)。因为字符串在双引号中,所以需要
    // 多加一个反斜线。
    $html = "<b>bold text</b><a href=howdy.html>click me</a>";preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);for ($i=0; $i< count($matches[0]); $i++) {
      echo "matched: ".$matches[0][$i]."\n";
      echo "part 1: ".$matches[1][$i]."\n";
      echo "part 2: ".$matches[3][$i]."\n";
      echo "part 3: ".$matches[4][$i]."\n\n";
    }
    ?>  本例将输出: matched: <b>bold text</b>
    part 1: <b>
    part 2: bold text
    part 3: </b>matched: <a href=howdy.html>click me</a>
    part 1: <a href=howdy.html>
    part 2: click me
    part 3: </a>
     
      

  2.   

    取href:
    preg_match_all('/(?<=href=")[\w\d\.:\/]*/',$str,$rs);
    ------------------------------------------------------供参考,以前找的一个
      

  3.   


    $str = '<a class="aavv" target="_blank" href="/dsa/asdas">dsdsadsa </a>';
    preg_match_all("/<a[^<>]*href=\"([^\"]+)\"[^<>]*>([^<>]+)<\/a>/i", $str, $matches);
      

  4.   

    按照 3楼的写法:
    $str = '<a class="aavv" target="_blank" href="/dsa/asdas">dsdsadsa </a>';
    preg_match_all("/<a[^<>]*href=\"([^\"]+)\"[^<>]*>([^<>]+)<\/a>/i", $str, $matches);echo $matches[1]; //为href的值
    echo $matches[2]; //为text的值
      

  5.   

    $str = '<a class="aavv" target="_blank" href="/dsa/asdas">dsdsadsa </a>'$par = '/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i';
    preg_match_all($par, $str, $result);这个是我刚刚用来采集的
    和你的要求差不多
    应该对你有用
      

  6.   

    正则表达式用4楼的,只是在preg_match_all()的flag标志位加上PREG_SET_ORDER,
    这样..$matches[0][1]为href,    $matches[0][2]为innerHTML,     $matches[1][1]为下一个href, $matches[1][2]为下一个innerHTML,
         ......
      

  7.   

    三楼的可以达到提取href和text的目的,感谢哈!