PHP Curl: получение списка каталогов и загрузка каталогов, подключающихся к HTTP - PullRequest
1 голос
/ 06 февраля 2010

Я довольно новичок в CURL, и мне удалось получить отдельные файлы, например:

$c_session = curl_init();

curl_setopt ($c_session, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($c_session, CURLOPT_URL, $uri);
curl_setopt ($c_session, CURLOPT_TIMEOUT, '12');

$content = curl_exec($c_session);
curl_close ($c_session);

Теперь мне нужно иметь возможность просматривать каталоги и загружать их с помощью CURL.Проблема в том, что мне нужно подключиться к HTTP-серверу, а не к FTP-серверу.

Ответы [ 4 ]

3 голосов
/ 16 февраля 2010

Вам нужно будет проанализировать список, сгенерированный сервером, будь то с помощью DirectoryListing, как указано выше, или другой сценарий на стороне сервера, который генерирует список ссылок.

Затем вы проанализируете HTML-код и извлечете все теги a href.

Если вы полагаетесь на вывод другого скрипта (список каталогов), вам может потребоваться запустить HTML через tidy для создания XHTML, а затем передать его в simplexml. Затем вы можете написать запрос xpath наподобие «// a» и получить все атрибуты.

$list = array();
$x = new SimpleXMLElement($stringfromcurl);
foreach ($x->xpath('//a') as $node) {
    curl_fetch_href($x['href']);
}

Или ... создайте список самостоятельно, как что-то немного легче разобрать, а затем сделайте то же самое.

Это эквивалентно выполнению чего-то вроде wget -r -l1

3 голосов
/ 06 февраля 2010

Я не думаю, что в HTTP есть встроенная функция просмотра каталогов. Самое близкое, что вы получите - это DirectoryListing , который Apache и другие веб-серверы могут создать при доступе к URL-адресу папки. Но это HTML, и вам придется сначала его проанализировать.

Лучше использовать FTP или, если возможно, с помощью серверного сценария создать простой список, который вы можете загружать, анализировать и обрабатывать.

1 голос
/ 06 февраля 2010

При переходе на хост / путь /, если нет index.html, многие серверы будут перечислять имена и ссылки на файлы Не все серверы настроены на показ пустых каталогов. Если сервер, к которому вы подключаетесь, вам нужен скрининг сгенерированного списка каталогов.

Для этого взгляните на библиотеку simple_html_dom .

0 голосов
/ 15 февраля 2010

Использует ли сервер WebDAV ? Если это так, вы можете найти библиотеку для PHP , которая позволит вам это сделать. Однако шансы невелики, особенно если вы пытаетесь получить информацию с общедоступного веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...