인터넷이 대중화되면서 사진은 사람들의 일상생활에서 없어서는 안 될 부분이 되었습니다. 소셜 미디어, 뉴스 정보, 개인 일기 등에서 사진은 매우 중요한 역할을 합니다. 그래서 우리는 어떻게 하면 PHP를 이용해 인터넷에 있는 모든 사진을 다운로드 받을 수 있고, 사진과 관련된 더 많은 기능을 제공할 수 있을지 자연스럽게 생각하게 되었습니다. 다음 기사에서는 PHP를 사용하여 인터넷에서 모든 이미지를 다운로드하는 구체적인 방법과 기술에 중점을 둘 것입니다.
인터넷에서 이미지를 다운로드하려면 먼저 이미지의 출처를 명확히 해야 합니다. 일반적으로 웹페이지의 이미지는 img 태그를 통해 참조되므로 HTML 페이지를 구문 분석할 수 있습니다. 코드, 이미지에 대한 링크를 가져옵니다. PHP에서는 CURL 또는 file_get_contents 함수를 사용하여 페이지의 HTML 코드를 가져올 수 있습니다.
$url = 'https://www.example.com'; $html = file_get_contents($url);
HTML 코드를 가져온 후 정규식을 사용하여 그 안에 있는 이미지 링크를 일치시킬 수 있습니다. .jpg, .jpeg, .png, .gif로 끝나는 모든 링크를 가져오려면 다음 정규식을 사용할 수 있습니다.
preg_match_all('/<img.*?src=["'](.+?.(?:jpg|jpeg|png|gif))["'].*?>/i', $html, $matches); $links = array_unique($matches[1]);
위 코드에서 preg_match_all 함수는 정규식을 사용하여 HTML의 img 태그와 일치시킵니다. , $matches[1]을 통해 모든 이미지 링크를 얻은 다음 array_unique 함수를 사용하여 중복 링크를 제거합니다.
이미지에 대한 링크를 얻은 후 컬이나 file_get_contents 함수를 사용하여 이미지를 로컬에 다운로드할 수 있습니다. 동일한 이름을 가진 파일을 다운로드하지 않기 위해 각 파일에 고유한 파일 이름을 지정할 수 있습니다. 간단한 방법은 현재 시간과 MD5 값을 기반으로 파일 이름을 생성하는 것입니다.
foreach ($links as $link) { $extension = pathinfo(parse_url($link, PHP_URL_PATH), PATHINFO_EXTENSION); $filename = md5($link . time()) . '.' . $extension; file_put_contents($filename, file_get_contents($link)); }
위 코드에서는 foreach 루프를 사용하여 모든 이미지 링크를 순회하고,parse_url 함수를 사용하여 링크의 경로를 얻습니다(제외) pathinfo 함수는 경로의 확장자를 가져온 후 마지막으로 file_get_contents 함수를 사용하여 이미지를 로컬에 다운로드하고, file_put_contents 함수를 사용하여 다운로드한 파일 내용을 로컬 파일로 저장합니다. 각 파일 이름은 고유하므로 이름이 중복되는 것에 대해 걱정할 필요가 없습니다.
사진을 다운로드하는 동안 사진 링크를 사용할 수 없거나 다운로드 속도가 너무 느린 등 비정상적인 상황이 발생할 수 있습니다. 이러한 비정상적인 상황이 프로그램에 부정적인 영향을 미치는 것을 방지하기 위해 다운로드 프로세스에서 예외 처리를 수행할 수 있습니다. 예를 들어, 파일 다운로드가 실패하면 오류 메시지나 로그를 인쇄할 수 있습니다:
foreach ($links as $link) { $extension = pathinfo(parse_url($link, PHP_URL_PATH), PATHINFO_EXTENSION); $filename = md5($link . time()) . '.' . $extension; $content = @file_get_contents($link); if ($content !== false) { file_put_contents($filename, $content); } else { error_log('Failed to download ' . $link); } }
위 코드에서는 오류 마스크 @를 사용하여 file_get_contents 함수의 오류 프롬프트를 마스크한 다음 판단 구조를 사용하여 확인합니다. 결과를 다운로드하고 error_log를 사용합니다. 이 함수는 오류 정보를 기록합니다.
대규모 이미지를 다운로드할 때는 다운로드 속도 문제도 고려해야 합니다. 다운로드 속도가 너무 빠르면 서버에 불필요한 부하가 발생할 수 있으며, 심지어 서버에 의한 악의적인 공격으로 간주될 수도 있습니다. 따라서 다운로드 속도를 제한해야 합니다.
다운로드 속도를 제어하기 위해 절전 기능을 사용하여 일정 기간 동안 프로그램을 일시 중지할 수 있습니다. 예를 들어, 프로그램이 사진을 다운로드하는 동안 서버에 과도한 부하를 주지 않도록 사진을 다운로드한 후 1초의 일시 중지를 설정할 수 있습니다.
foreach ($links as $link) { $extension = pathinfo(parse_url($link, PHP_URL_PATH), PATHINFO_EXTENSION); $filename = md5($link . time()) . '.' . $extension; $content = file_get_contents($link); if ($content !== false) { file_put_contents($filename, $content); } else { error_log('Failed to download ' . $link); } sleep(1); }
위 코드에서는 절전 기능을 사용하여 프로그램을 일시 중지합니다. 1 초.
요약
이 기사에서는 PHP를 사용하여 인터넷에서 모든 이미지를 다운로드하는 방법을 자세히 살펴보았습니다. 구체적인 아이디어는 먼저 모든 이미지 링크를 얻은 다음 모든 링크를 반복하고 file_get_contents 함수를 사용하여 이미지를 다운로드하고 로컬에 저장한 다음 마지막으로 다운로드 프로세스에서 예외 처리 및 속도 제어를 수행하는 것입니다. 이 글에서는 간단한 PHP 구현만을 제공하지만, 독자들은 이 글의 소개를 통해 이미지 다운로드의 구현 과정을 더 잘 이해하고 숙달할 수 있으며, 관련 문제에 직면했을 때 더 나은 아이디어와 해결책을 얻을 수 있을 것이라고 믿습니다.
위 내용은 PHP를 사용하여 인터넷의 모든 이미지를 다운로드하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!