preg_match_all('/<a.*?href="([^\"]+).*?target="_self"/i',$data,$book);
preg_match_all('/<a.*?target="_self".*?href="([^\"]+)/i',$data,$book);
把上面两个正则合并成一个正则

解决方案 »

  1.   


    preg_match_all('/<a.*?href="([^\"]+).*?target="_self"||/<a.*?target="_self".*?href="([^\"]+)/i',$data,$book);
      

  2.   

    $p = '/<a.*(?:href="([^\"]+?).*|target="_self".*){2}/iU';//这是你要的//测试
    $s = '<a target="_self" title="title" href="url" ><a href="URL" target="_self" >';
    preg_match_all($p, $s, $r);
    print_r($r);
    Array
    (
        [0] => Array
            (
                [0] => <a target="_self" title="title" href="url
                [1] => <a href="URL" target="_self"
            )    [1] => Array
            (
                [0] => url
                [1] => URL
            ))