test.html
<!DOCTYPE html>
<html>
<head>test</head>
<body>
                    <a id="a5" href="111">wawa</a>
<a id="a6" href="222">hehe</a>
<a id="a7" href="333">haha</a>
<a id="a8" href="444">uuuu</a>
              ......
<b>
<a id="a1" href="111">wawa</a>
<a id="a2" href="222">hehe</a>
<a id="a3" href="333">haha</a>
<a id="a4" href="444">uuuu</a>
</b>
               ........
</body>
</html>想要用正则获取<b></b>标签内的每一个<a>的href
请问要怎么写?
php 正则

解决方案 »

  1.   

    $html = <<<TTT
    <!DOCTYPE html>
    <html>
        <head>test</head>
        <body>
                        <a id="a5" href="111">wawa</a>
                <a id="a6" href="222">hehe</a>
                <a id="a7" href="333">haha</a>
                <a id="a8" href="444">uuuu</a>
                  ......
            <b>
                <a id="a1" href="111">wawa</a>
                <a id="a2" href="222">hehe</a>
                <a id="a3" href="333">haha</a>
                <a id="a4" href="444">uuuu</a>
            </b>    
                   ........
        </body>
    </html>
    TTT;
    preg_match_all('@<b>([^`]*?)<\/b>@i',$html,$match);
    preg_match_all('@href="(.+?)"@i',$match[0][0],$matches);
    var_dump($matches);
      

  2.   


    这是先把<b>里面的<a>先匹配出来,然后在匹配出href
    有没有一个正则就匹配到的方法?
      

  3.   

    一个正则,我没有这个本事。
    不过除了正则,还可以用dom解析,包括simplehtmldom
      

  4.   

    ~<b>\s*(<a[^>]+href="(.*?)">.*?</a>)*?\s*</b>~msi大体如此,自己调一下