如何使用PHP读取远程服务器上的目录内容?

时间:2011-09-15 21:10:03

标签: php directory

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

5 个答案:

答案 0 :(得分:8)

以下是一个示例,如果您需要通过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()。

答案 1 :(得分: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);

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

opendir()

readdir()

完成你想要做的事。


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

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

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

答案 4 :(得分:0)

//作为一个后来者,如果不是更快的话,这个似乎更容易受读者欢迎

$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);