【问题标题】:How can I read the directory contents on a remote server with PHP?如何使用 PHP 读取远程服务器上的目录内容?
【发布时间】:2011-09-15 21:10:02
【问题描述】:

我有一个 url,http://www.mysite.com/imagesimages 目录允许目录列表。如何使用 PHP 获取该目录中的文件?

【问题讨论】:

    标签: php directory


    【解决方案1】:

    如果您需要通过 HTTP 读取图像并且服务器是 Apache,这是一个示例:

    <?php
    $url = 'http://www.mysite.com/images';
    
    $html = file_get_contents($url);
    
    $count = preg_match_all('/<td><a href="([^"]+)">[^<]*<\/a><\/td>/i', $html, $files);
    
    for ($i = 0; $i < $count; ++$i) {
        echo "File: " . $files[1][$i] . "<br />\n";
    }
    
    ?>
    

    如果它是您运行 PHP 的同一台服务器,您可以使用 opendir() 和 readdir()。

    【讨论】:

    • 通过正则表达式解析 HTML? BOOO,我说。
    • 它不是“HTML”,它只是一些众所周知的文本结构(偶然看起来像 HTML)。正则表达式非常适合这些东西。
    【解决方案2】:

    我知道这个问题已经很老了,但只是为了让我开始使用这个论坛,我想我会添加我的观点。我发现发生了以下情况(参考使用正则表达式的原始答案。

    我的 html 原来是这样格式化的:

    <td>
    <a href="bricks.php">bricks.php</a>
    </td>
    

    所以我最终使用了这个:

    $count = preg_match_all('/<a href=\"([^\"?\/]+)">[^<]*<\/a>/i', $html, $files);
    

    我想使用以下(在在线生成器测试人员中测试正常,但在 php 代码中找不到匹配项):

    $count = preg_match_all('/<td>(?:[\w\n\f])<a href="([^"]+)">[^<]*<\/a>(?:[\w\n\f])<\/td>/i', $html, $files);
    

    【讨论】:

      【解决方案3】:

      您需要 FTP 访问权限(该 URL 的 FTP 帐户)。如果你有这个,那么你可以使用 FTP 登录服务器并使用:

      opendir()
      

      readdir()
      

      完成你想做的事情。


      如果您无权访问服务器,则需要抓取网站的 HTML,它会变得更加复杂 -> 所以我可以让其他人解决这个问题......但是谷歌搜索“抓取 html 网站”或类似的东西,有很多预先编写的函数可以做类似的事情。

      http://www.thefutureoftheweb.com/blog/web-scrape-with-php-tutorial

      http://www.bradino.com/php/screen-scraping/

      【讨论】:

      • @shamoon - 添加到答案中。
      【解决方案4】:

      您可以使用正则表达式从列表中获取网址。 (不,您不能使用 DOMDOCUMENT,因为它不是有效的 HTML)

      【讨论】:

        【解决方案5】:

        //虽然是后来者,但如果不是更快的话,这似乎对读者更友好

        $url = 'http://whatevasite/images/';
        $no_html = strip_tags(file_get_contents($url));
        $arr = explode('Parent Directory', $no_html);
        $files = trim($arr[1]);
        $files = explode("\n ", $files);
        var_dump($files);
        

        【讨论】:

          猜你喜欢
          • 2013-10-24
          • 1970-01-01
          • 2014-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多