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