【发布时间】:2011-09-15 21:10:02
【问题描述】:
我有一个 url,http://www.mysite.com/images,images 目录允许目录列表。如何使用 PHP 获取该目录中的文件?
【问题讨论】:
我有一个 url,http://www.mysite.com/images,images 目录允许目录列表。如何使用 PHP 获取该目录中的文件?
【问题讨论】:
如果您需要通过 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 原来是这样格式化的:
<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);
【讨论】:
您需要 FTP 访问权限(该 URL 的 FTP 帐户)。如果你有这个,那么你可以使用 FTP 登录服务器并使用:
opendir()
和
readdir()
完成你想做的事情。
如果您无权访问服务器,则需要抓取网站的 HTML,它会变得更加复杂 -> 所以我可以让其他人解决这个问题......但是谷歌搜索“抓取 html 网站”或类似的东西,有很多预先编写的函数可以做类似的事情。
即 http://www.thefutureoftheweb.com/blog/web-scrape-with-php-tutorial
【讨论】:
您可以使用正则表达式从列表中获取网址。 (不,您不能使用 DOMDOCUMENT,因为它不是有效的 HTML)
【讨论】:
//虽然是后来者,但如果不是更快的话,这似乎对读者更友好
$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);
【讨论】: