$tmp_url = preg_replace("/.*<h3><a.*?href=[\"|']?([^\"]*).*/is", "\\1", $v);
([^\"]*)这个正则表达式的含义是不是去排除"以后所有的内容

解决方案 »

  1.   

    把 <a href=url> 换成url
      

  2.   

    整个正则表达式的意思是用href=后面的url。([\"]*)的意思是保留"以内的内容。因为后面有一个前向引用\\1就是指向的这部分,用这部分代替整个匹配的字符串。
      

  3.   

    楼主的正则的主要目的是取出html中的链接地址,但是好像有些正则的基本概念没搞清楚
    [\"|']?([^\"]*)中字符间本身就有“或的关系”,没必要加“|”当然你要同时“|”就另当别论。正则表达式30分钟入门教程
    http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
      

  4.   

    取值还是用preg_match_all比较好吧
    <?php
    $str = <<<HTML
    <a href="123.html">sdf</a>
    <a href='456.html'>sdf</a>
    <a href="789.html" title="没什么">sdf</a>
    <a class="aa" href="abc.html">sdf</a>
    <a class="aa" href=xxx.htm>sdf</a>
    <a class="aa" href=xyz.htm target="_balnk">sdf</a>
    HTML;
    preg_match_all("/<a .*?href=([\"']?)([^\"' >]+)\\1.*?>/is",$str,$r); 
    print_r($r[2]);
    ?>