我有一个网址http://www.mysite.com/images
,images
目录允许目录列表。如何使用PHP获取该目录中的文件?
答案 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
答案 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);