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

如何使用PHP读取远程服务器上的目录内容?,php,directory,Php,Directory,我有一个url,http://www.mysite.com/images和图像目录允许目录列表。如何使用PHP获取该目录中的文件?您可以使用regex从列表中获取URL。(不,您不能使用DOMDOCUMENT,因为它不是有效的HTML)您需要FTP访问(该URL的FTP帐户)。如果您有此功能,则可以使用FTP登录服务器并使用: opendir() 及 完成你想做的事情 如果你没有访问服务器的权限,你需要清理网站的HTML,它会变得更复杂->所以我可以让其他人处理这个问题。。。但是谷歌搜索“s

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

您可以使用regex从列表中获取URL。(不,您不能使用DOMDOCUMENT,因为它不是有效的HTML)

您需要FTP访问(该URL的FTP帐户)。如果您有此功能,则可以使用FTP登录服务器并使用:

opendir()

完成你想做的事情


如果你没有访问服务器的权限,你需要清理网站的HTML,它会变得更复杂->所以我可以让其他人处理这个问题。。。但是谷歌搜索“scrapehtmlsite”或类似的东西,有很多预先编写的函数可以做类似的事情

i、 e。


如果您需要通过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()。

我知道这个问题已经很老了,但为了让我开始使用这个论坛,我想我应该添加我的视图。我发现发生了以下情况(参考使用regex的原始答案)

我的html格式如下所示:

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

所以我用了这个:

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

$count=preg\u match\u all('/[^//对于一个后来者来说,这本书看起来更容易阅读,如果不是更快的话

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

@shamoon-通过regex?BOOO添加到answer.HTML解析中,我说。它不是“HTML”,只是一些众所周知的文本结构(看起来像HTML,这是偶然的)。regex非常适合这种东西。
$count = preg_match_all('/<td>(?:[\w\n\f])<a href="([^"]+)">[^<]*<\/a>(?:[\w\n\f])<\/td>/i', $html, $files);
$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);