PHP Curl: Bir dizin listesini alma ve bağlanma dizinleri indirirken HTTP

4 Cevap php

Ben kıvırmak için oldukça yeni ve ben bu gibi dosyaları tek tek almak mümkün:

$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);

Şimdi dizinleri listelemek ve CURL kullanarak onları indirmek gerekiyor. Yakalamak Ben bir HTTP sunucusu değil, bir FTP biri bağlanmak için ihtiyaç vardır.

4 Cevap

Bunu yukarıdaki gibi directoryListing veya bağlantıların bir listesini oluşturur, başka bir sunucu tarafı script olsun, sunucu tarafından oluşturulan bir liste ayrıştırmak zorunda gidiyoruz.

Daha sonra HTML ayrıştırmak ve tüm bir href etiketleri çekin edeceğiz.

Eğer başka bir komut dosyası (directoryListing) çıkışındaki dayanarak ediyorsanız, o zaman SimpleXML içine geçmek, XHTML üretmek için düzenli aracılığıyla HTML çalıştırmanız gerekebilir. Daha sonra '/ / a' gibi bir XPath sorgusu yazmak ve tüm özelliklerini alabilirsiniz.

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

Ya da ... sonra anlaşma aynı tür yapmak, ayrıştırmak için biraz daha kolay bir şey olarak listesine kendiniz oluşturmak.

Bu gibi bir şey yapmanın eşdeğer wget -r -l1

Ben HTTP yerli dizin listeleme işlevi olduğunu sanmıyorum. Alırsınız yakın DirectoryListing bir klasör URL erişirken Apache ve diğer Web sunucuları may üretmek. Ama bu HTML ve önce bunu ayrıştırmak gerekir.

Daha iyi kullanılması, FTP veya eğer, bir sunucu tarafı komut dosyası indirebilir, ayrıştırmak ve süreç basit bir liste oluşturmak var.

Bir host / yoluna gittiğinizde hiçbir index.html yoksa / birçok sunucu dosyaları isimleri ve bağlantıları listeler. Tüm sunucular boş dizinleri göstermek için yapılandırılır. Bağlandığınız sunucu ise, oluşturulan dizin listeleme kazımak taranması gerekir.

Bunun için simple_html_dom ayrıştırma kütüphanede bir göz atın.

Sunucu kullanıyor WebDAV? Eğer öyleyse, a library for PHP ki bunu yapmak için izin verebilirsiniz bulmak mümkün olabilir. Şansını bir kamu bakan web sunucusu şeyler almak için çalışıyoruz, özellikle eğer, ancak, ince.