<a href=链接1 class="d" target="_blank">URLNAME1</a><br>
<a href='链接2' target="_blank" style='color:red;'>URLNAME2</a><br>
<a  target="_blank" href="链接3">URLNAME3</a><br>
<a  href="链接4">URLNAM4E</a><br>
有以上链接。使用PHP正则匹配输出所有href其中href有带单引号,有带双引号,有什么都不带得情况。

解决方案 »

  1.   

    href有不带引号的吗?我没见到过呀
      

  2.   

    有这种情况:<a  target=_blank href=链接3>1</a>,不再少数
      

  3.   

    $s =<<< TXT
    <a href=链接1 class="d" target="_blank">URLNAME1</a><br>
    <a href='链接2' target="_blank" style='color:red;'>URLNAME2</a><br>
    <a  target="_blank" href="链接3">URLNAME3</a><br>
    <a  href="链接4">URLNAM4E</a><br>
    TXT;preg_match_all('/href=([\'"]?)(.+?)\\1/', $s, $m);
    print_r($m);
    Array
    (
        [0] => Array
            (
                [0] => href=�
                [1] => href='链接2'
                [2] => href="链接3"
                [3] => href="链接4"
            )    [1] => Array
            (
                [0] => 
                [1] => '
                [2] => "
                [3] => "
            )    [2] => Array
            (
                [0] => �
                [1] => 链接2
                [2] => 链接3
                [3] => 链接4
            ))
      

  4.   

    $s =<<< TXT
    <a href=链接1 class="d" target="_blank">URLNAME1</a><br>
    <a href='链接2' target="_blank" style='color:red;'>URLNAME2</a><br>
    <a  target="_blank" href="链接3">URLNAME3</a><br>
    <a  href="链接4">URLNAM4E</a><br>
    TXT;preg_match_all('/href=([\'"]?)([^\s]+)\\1/', $s, $m);
    print_r($m);
    Array
    (
        [0] => Array
            (
                [0] => href=链接1
                [1] => href='链接2'
                [2] => href="链接3"
                [3] => href="链接4"
            )    [1] => Array
            (
                [0] => 
                [1] => '
                [2] => "
                [3] => "
            )    [2] => Array
            (
                [0] => 链接1
                [1] => 链接2
                [2] => 链接3
                [3] => 链接4
            ))