2011-01-06 6 views
0

PHP로 파일을 다운로드하려고합니다. 내가 $ URL에 파일 내의 링크의 내용을 다운로드하는 방법HTML 페이지에서 어떻게 링크를 추출 할 수 있습니까?

$file = file_get_contents($url); 

... 수동 또는 제 3 자 플러그인을 통해 중, 결과 HTML 문자열을 구문 분석해야합니다

+0

링크를 file_get_contents를 호출하여 다운로드하고 링크를 인수로 전달하십시오. – Oswald

+0

[HTML을 구문 분석하는 데 가장 좋은 방법] 가능한 복제본 (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon

답변

2

이것은 PHP에서 매우 도전이다, 구문 분석 HTML을 필요로한다. 많은 문제를 해결하려면 PHPQuery (http://code.google.com/p/phpquery/)와 같은 HTML 구문 분석 라이브러리를 다운로드하십시오. 그런 다음 pq('a')으로 모든 링크를 선택하고 href 속성 값을 차례로 반복해야하고 각각에 대해 상대 URL을 절대 URL로 변환하고 결과 URL에 file_get_contents을 실행해야합니다. 다행히도 이러한 포인터를 통해 시작해야합니다.

+0

감사합니다. Nathan MacInnes –

1

그러면 주어진 파일에서 모든 URL을 찾으시겠습니까? 구조에 정규식 ... 아래 몇 가지 예제 코드는 당신이 원하는 일을해야합니다

$file = file_get_contents($url); 
if (!$file) return; 
$file = addslashes($file); 

//extract the hyperlinks from the file via regex 
preg_match_all("/http:\/\/[A-Z0-9_\-\.\/\?\#\=\&]*/i", $file, $urlmatches); 

//if there are any URLs to be found 
if (count($urlmatches)) { 
    $urlmatches = $urlmatches[0]; 
    //count number of URLs 
    $numberofmatches = count($matches); 
    echo "Found $numberofmatches URLs in $url\n"; 

    //write all found URLs line by line 
    foreach($urlmatches as $urlmatch) { 
     echo "URL: $urlmatch...\n"; 
    } 
} 

편집 : 제가 제대로 질문을 이해하면, 당신은 지금 발견 된 URL의 내용을 다운로드 할 수 있습니다. 각 URL에 루프를 호출하여 file_get_contents을 호출 할 수 있지만 미리 필터링 (예 : 이미지 다운로드 등)을 수행하고 싶을 수 있습니다.

관련 문제