先谢谢各位看此帖!!
  表单输入url后,我想通过一种方法读取该网站上所有友情链接,不知道可否使用正则表达式来达到目的,如果您有更好的方法感谢您指出。
  若使用正则表达式的话,我应该怎么写这个正则来提取url和<a></a>之间的文字,谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【victor0910】截止到2008-07-04 01:54:57的历史汇总数据(不包括此帖):
    发帖的总数量:9                        发帖的总分数:180                      
    结贴的总数量:5                        结贴的总分数:40                       
    无满意结贴数:3                        无满意结贴分:60                       
    未结的帖子数:4                        未结的总分数:140                      
    结贴的百分比:55.56 %               结分的百分比:22.22 %                  
    无满意结贴率:60.00 %               无满意结分率:150.00%                  
    楼主加油
      

  2.   

    我想做的是一个友情链接自动查询系统,就是用户输入自己的网站后,系统自动分析出他网站上所有的友情链接,按现在网上现有的案例来看,他们应该是分析出一个网站上所有<a>标签内的东西,然后对比自己的域名,不一样就认为是友情链接,或者不是以http开头的就认为是友情链接(因为有很多网站自己的内部链接都是用的相对地址就是/path/xxx.html/php这样) 
      

  3.   

    用javascript取可以不?就是比较麻烦
      

  4.   

    有点意思,你可以开发搜索引擎了
    第一步:提取所有链接url: preg_match_all('|href=(.*?) ?|is',$str,$arr)
    print_r($arr);
    第二步:和本域比较,如果不是本域,则认为是友情
    (当然,这个规则可以不确
    分析url,取得域部分 用parse_url
      

  5.   

    fxs_2008朋友,您能否帮我写出具体一点的代码,我用你的方法读出的东西很乱呀,不知道怎么处理
      

  6.   


    如果href的内容为""
    preg_match_all('/href=\"([^>]*?)\"[^>]*?>(.*?)<a/is',$str,$arr); //匹配所有url和<a>之间内容 
    print_r($arr); 如果<a></a>间有很多内容,可能会很长,这是很正常的
    试试吧
      

  7.   

    您好,通过您的方法,我得到的结果都是cnArray ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) ) Array ( [0] => Array ( ) [1] => 
    请您指教
      

  8.   

    <?php
           $domain='hao123.com';
           $text=file_get_contents("http://$domain");
           $pattern="/<a href=[\'\"]?http:\/\/[^(".str_replace(".","\.",$domain).")].*?>(.*?)<\/a>/";
           preg_match_all($pattern,$text,$match);
           var_dump($match);
    ?>
    不支持二级域名.
      

  9.   

    preg_match("/<a.+href\s*=\s*[\'\"]?([^\s<\'\"]*)[\'\"]?.*>([^<\/a>].*)<\/a>/i" ,$linecode,$tmp); 
    fxs_2008大哥,我用上面的方法得到了结果,但少过滤了一部分内容,因为我不但想得到<a></a>之间的内容,还需要对他进行过滤, 要求里面包括http:// 而且还要有一个完整的url例如http://xxx.com或http://www.xxx.com 这样匹配到结果以后,我就可以用explode函数再截取其中的完整网址,还可以过滤掉内部链接,同样也可以截取到>和</a>之间的文字了。谢谢
      

  10.   

    preg_match_all('/<a href="?(?=http:\/\/)([^"]+)"?[^>]+>([^<]+)<\/a>/i',$fp,$tmp);
    这个正则已经有点模样了,只是<a>标签中几种表现形式还不够准确
    例如:
    1.<a href=http://www.sina.com target=_blank>新浪</a>               没有引号
    2.<a href='http://www.sina.com' target='_blank'>新浪</a>           单引号
    3.<a href="http://www.sina.com" target="_blank">新浪</a>           双引号
    4.<a href="http://www.sina.com" title="新浪" target="_blank">新浪</a> 有title也有target="_blank"
    5.<a target="_blank" href="http://www.sina.com">新浪</a>             target="_blank"在前面
    6.<a href="http://www.sina.com" rel=nofollow target="_blank">新浪</a> 带有rel=nofollow另外还有由上面这6种方式引伸出的其它单引号、双引号与target和title的组合方式由于a标签里的形式多样,所以必须得过滤严格,不然很容易出错,谢谢各位帮忙非常感谢大家