2010-02-05 11 views
1

에 연결하는 디렉토리를 다운로드 할 디렉토리를 얻기 나는 곱슬 곱슬 비교적 새로운 그리고 난 같은 개별 파일을 가져올 수 있었다 :PHP 컬 : 목록 및 HTTP

$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을 사용하여 다운로드하십시오. FTP 서버가 아닌 HTTP 서버에 연결해야합니다.

답변

3

위와 같은 DirectoryListing 또는 링크 목록을 생성하는 다른 서버 측 스크립트에 관계없이 서버에서 생성 된 목록을 구문 분석해야합니다.

그러면 HTML을 구문 분석하고 모든 a href 태그를 제거합니다.

다른 스크립트 (Directorylisting)의 출력에 의존하는 경우 XHTML을 생성하려면 tidy를 통해 HTML을 실행 한 다음 simplexml로 전달해야 할 수 있습니다. 그런 다음 '// a'와 같은 xpath 쿼리를 작성하고 모든 속성을 검색 할 수 있습니다.

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

또는 ... 좀 더 쉽게 구문 분석 할 수있는 목록을 직접 생성 한 다음 동일한 종류의 거래를 수행하십시오.

이것은 다음과 같습니다. wget -r -l1

3

HTTP에 기본 디렉토리 목록 기능이 있다고 생각하지 않습니다. 가장 가까운 주소는 DirectoryListing이며 폴더 URL에 액세스 할 때 Apache 및 다른 웹 서버 일 수 있습니다.이 생성됩니다. 하지만 그것은 HTML이고 먼저 구문 분석해야합니다.

FTP를 사용하는 것이 더 좋거나 가능한 경우 서버 쪽 스크립트에서 다운로드하여 구문 분석하고 처리 할 수있는 간단한 목록을 생성 할 수 있습니다.

+0

FTP를 사용할 수 없습니다. 서버 측 스크립트 아이디어는 유망한 것으로 들립니다. – HyderA

1

호스트/경로로 이동/index.html이없는 경우 많은 서버가 파일의 이름과 링크를 나열합니다. 모든 서버가 빈 디렉토리를 표시하도록 구성되어있는 것은 아닙니다. 연결하려는 서버가있는 경우 생성 된 디렉토리 목록을 스크리닝해야합니다.

이 경우 구문 분석 라이브러리 simple_html_dom을 살펴보십시오.

0

서버가 WebDAV입니까? 그렇다면 a library for PHP을 찾을 수 있습니다. 그러나 공개 된 웹 서버에서 물건을 얻으려고하는 경우 특히 가능성은 희박합니다.