> 백엔드 개발 > PHP 튜토리얼 > 원격 이미지 수집을 위한 PHP 예제 코드

원격 이미지 수집을 위한 PHP 예제 코드

WBOY
풀어 주다: 2016-07-25 08:55:37
원래의
872명이 탐색했습니다.
  1. function make_dir($path){
  2. if(!file_exists($path)){//존재하지 않는 경우 생성
  3. $mk=@mkdir($path,0777); //권한
  4. @chmod($path,0777)
  5. }
  6. return true;
  7. 코드 복사
read_filetext() 함수는 이미지 콘텐츠를 가져옵니다. fopen을 사용하여 이미지 파일을 연 다음 fread를 사용하여 이미지 파일 내용을 읽습니다.

function read_filetext($filepath){
  • $filepath=trim($filepath)
  • $htmlfp= @fopen($filepath,"r");
  • //원격
  • if(strstr($filepath,"://")){
  • while($data=@fread($htmlfp,500000 )){
  • $string.=$data;
  • }
  • }
  • //로컬
  • else{
  • $string=@fread($htmlfp,@filesize($filepath) );
  • }
  • @fclose($htmlfp);
  • return $string;
  • }
  • 코드 복사
  • )는 파일을 쓰고 이미지 콘텐츠 fput을 파일에 씁니다. 즉, 이미지 파일을 저장합니다.

    function write_filetext($filepath,$string){
  • //$string=stripSlashes($string)
  • $fp=@fopen($filepath,"w");
  • @fputs($fp,$string)
  • @fclose($fp)
  • 코드 복사
  • get_filename() 함수는 이미지 이름을 가져오고 저장할 파일 이름을 사용자 정의할 수도 있습니다.

    function get_filename($filepath){
      $fr=explode("/",$filepath)
    1. $count=count($fr)-1;
    2. return $fr[$count];
    3. 코드 복사
    여러 함수를 조합하여 save_pic() 함수에서 호출하고 마지막으로 저장된 사진 경로를 반환합니다.

    function save_pic($url,$savepath=''){
    //주소 처리
      $url =trim($url);
    1. $url=str_replace(" "," ",$url)
    2. //파일 읽기
    3. $string=read_filetext($url)
    4. if(비어 있음) ($string)){
    5. echo '파일을 읽을 수 없습니다';exit;
    6. }
    7. //파일 이름
    8. $filename = get_filename($url)
    9. //저장 디렉터리
    10. make_dir($savepath); //저장 디렉터리 생성
    11. //파일 주소
    12. $filepath = $savepath.$filename
    13. //파일 쓰기
    14. write_filetext($filepath,$string ) ;
    15. return $filepath;
    16. 코드 복사
    17. 마지막 단계에서 save_pic() 함수를 호출하여 사진을 저장합니다. 테스트를 위해 다음 코드를 사용하십시오.

    //타겟 이미지 주소

    $pic = "http://img0.pconline.com.cn/pconline /1205/06/2776119_end1_thumb.jpg";
    //저장 디렉토리
      $savepath = "images/";
    1. echo save_pic($pic,$savepath);
    2. 코드 복사
    3. 실제 적용 시 핫링크 방지 사진 수집을 비롯한 제품 정보 등 특정 사이트의 콘텐츠가 수집되어 해당 웹사이트의 서버에 저장될 수 있습니다. 이때 일반 매칭을 사용하여 페이지 내용을 일치시키고 페이지에서 일치하는 사진을 모두 찾은 다음 각각 웹사이트 서버에 다운로드하여 사진 모음을 완성할 수 있습니다.
    테스트 예:

    function get_pic($cont,$path){

    $pattern_src = '/<[img|IMG] .*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/'
    $num = preg_match_all ($pattern_src, $cont, $match_src);
      $pic_arr = $match_src[1]; //그림 배열 가져오기
    1. foreach ($pic_arr as $pic_item) { //각 항목의 주소를 가져오는 루프 picture
    2. save_pic($pic_item,$path); //사진을 다운로드하고 저장하세요
    3. echo "[OK]..!"
    4. }
    5. }
    6. 코드를 복사
    7. 한 후 페이지 내용을 분석하여 주요 내용을 파악하고 get_pic()을 호출하여 이미지를 저장합니다.

    //PConline에서 휴대폰 관련 기사의 콘텐츠 페이지 사진 수집

    $url = "http: / /gz.pconline.com.cn/321/3215791.html";
      $content = file_get_contents($url);//웹 콘텐츠 가져오기
    1. $preg = '#
      (.*)
      #iUs';

    2. preg_match_all($preg, $content, $arr)
    3. $cont = $ arr[1][0];
    4. get_pic($cont,'img/')
    5. 코드 복사
    6. 위 코드는 작성자가 직접 테스트한 것이며 이미지 수집이 가능하지만 아직 고려되지 않은 몇 가지 시나리오가 있습니다. 다양한 수집 방지 방법을 만들어 놓았습니다. 직접 연구해 보세요.



    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿