Reputation: 43639
I have a url, http://www.mysite.com/images
and the images
directory allows Directory Listings. How can I get the files in that directory with PHP?
Upvotes: 5
Views: 11696
Reputation: 1
// tho a late-comer, this one seems a bit more reader-friendly if not faster
$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);
Upvotes: 0
Reputation: 51
I know this question is very old, but just to get me into the swing of using this forum I thought I'd add my view. I found the following happened (referring to the original answer to use regex.
My html turned out to be formatted like this:
<td>
<a href="bricks.php">bricks.php</a>
</td>
So I ended up using this:
$count = preg_match_all('/<a href=\"([^\"?\/]+)">[^<]*<\/a>/i', $html, $files);
I wanted to use the following (which tested ok in the online generator testers, but it failed to find a match in the php code):
$count = preg_match_all('/<td>(?:[\w\n\f])<a href="([^"]+)">[^<]*<\/a>(?:[\w\n\f])<\/td>/i', $html, $files);
Upvotes: 2
Reputation: 50982
You can use regex to take urls from listing. (No you can't use DOMDOCUMENT as it's not a valid HTML)
Upvotes: 1
Reputation: 69977
Here is an example if you need to read the images over HTTP and the server is 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";
}
?>
If it is the same server you are running your PHP on, you can use opendir() and readdir().
Upvotes: 8
Reputation: 4701
You need FTP access (an FTP account to that URL). If you have this, then you can log into the server with FTP and use:
opendir()
and
readdir()
to accomplish what you are trying to do.
If you do not have access to the server, you will need to scrape the site's HTML, and it gets more complex -> so I can let somebody else tackle that one... but google search "scrape html site" or something similar, there are plenty of pre-written functions that can do similar things.
i.e. http://www.thefutureoftheweb.com/blog/web-scrape-with-php-tutorial
http://www.bradino.com/php/screen-scraping/
Upvotes: 1