我搜索了下preg_match_all
好多,可惜看了感觉都不怎么和上边的问题有关系!

解决方案 »

  1.   

    首先while(ereg("HREF=\"[^\"]*\"", $line, $match))  
    你对ereg理解错了, 他只能匹配一次,而且每次都是从头开始匹配。
    其次,ereg("HREF=\"[^\"]*\"", $line, $match))  ,因为HTML标签是不分大小写的,所以HTML里标签大小写都无所谓,但是对于正则表达式则区分大小写,所以建议用eregi
    并且,正则"HREF=\"[^\"]*\"" 根本没匹配东西,应该是"HREF=\"([^\"]*)\""才对你是不是想截取所有URL啊?这是我修改的``不知道我有没理解错
    <?php
    $URL = "http://www.microsoft.com/";  //start HTML page  
    print("<HTML>\n");  
    print("<HEAD>\n");  
    print("<TITLE>取得页面的链接</TITLE>\n");  
    print("</HEAD>\n");  print("<BODY>\n");  $page = fopen($URL, "r");//打开URL  print("链接 $URL<BR>\n");  
    print("<UL>\n");  while(!feof($page))//在页面中循环  
    {  
    $line = fgets($page, 255);  eregi("HREF=\"([^\"]*)\"", $line, $match);//打印出URL链接  
    print("<Li>");  
    print($match[1]);  
    print("</li><BR>\n");  }  print("</UL>\n");  fclose($page);  //关闭页面  
    print("</BODY>\n");  
    print("</HTML>\n");  
    ?>
      

  2.   

    ereg() 是区分大小写的.
    如果要用ereg的话就改用eregi()吧.
    eregi()是不区分大小写的.
      

  3.   

    上面的代码,输出有点问题,不好意思
    print("<Li>");  
    print($match[1]);  
    print("</li><BR>\n");  
    改成```
    if ($match)
    echo "<li>{$match[1]}</li>";
      

  4.   

    程序逻辑存在问题,但是没时间找了。。
    之前我自己写了个``你可以参考下`
    <?php
    //start HTML page  
    echo '<HTML> 
    <HEAD>
    <TITLE>取得页面的链接</TITLE> 
    </HEAD> 
    <BODY>';$url = 'http://www.microsoft.com/';
    $page = file_get_contents($url);//打开URL  
    if (!$page)
    exit;preg_match_all('/href="([^"]+?)"/', $page, $urls);$urls = $urls[1];print("链接 $url<BR>\n");  
    print("<UL>\n");  foreach ($urls as $pageurl)
    echo "<li>$pageurl</li>";print("</UL>\n");  
    //关闭页面  
    print("</BODY>\n");  
    print("</HTML>\n");  
    ?>  
      

  5.   

    请问你这个
    preg_match_all('/href="([^"]+?)"/', $page, $urls);
    区陪的是什么?