]*src="(http://(. )/(. ).(jpg|gif|bmp|bnp ) )"/isU"; //추출된 img 주소를 $img_array 변수 preg_match_에 저장합니다."/> ]*src="(http://(. )/(. ).(jpg|gif|bmp|bnp ) )"/isU"; //추출된 img 주소를 $img_array 변수 preg_match_에 저장합니다.">

>백엔드 개발 >PHP 튜토리얼 >acdsee 2009 라이센스 코드 PHP 기사 원격 이미지 수집을 로컬 코드로

acdsee 2009 라이센스 코드 PHP 기사 원격 이미지 수집을 로컬 코드로

WBOY
WBOY원래의
2016-07-29 08:40:231079검색

첫 번째 단계는 정규식을 사용하여 기사에서 모든 를 추출하는 것입니다.

코드를 복사하세요 :


$message //기사 내용
//일반(아직 아님)
$reg = "/]*src="(http ://(. ) /(. ).(jpg|gif|bmp|bnp))"/isU";
//추출된 img 주소를 $img_array 변수에 저장
preg_match_all($reg, $ message, $img_array , PREG_PATTERN_ORDER);
//중복 사진 필터링
$img_array = array_unique($img_array[1])


2단계. $img_array 배열을 반복합니다. 사진 기사 위치 저장 및 바꾸기

코드 복사 코드는 다음과 같습니다.


foreach($img_array as $img) {
/ /이미지가 귀하의 웹사이트에 있는지 확인
if('xxx.com' != get_domain($img)){// 이미지가 귀하의 서버에 없는 경우
// 이미지 파일 읽기
$Gimg = new GetImage();
$Gimg->source = $img;
$Gimg->save_to = './data/temp/'; $FILE = $Gimg-> ;download(); //사진을 로컬 위치로 이동
//사진이 저장된 위치를 가져오기 위해 앨범에 저장
$img_path = pic_save($FILE,0 ,'');
//텍스트 경로 교체
$message = str_replace($img, $img_path, $message)
}
}

.. ..이때 $message의 이미지는 자신의 서버로 대체되었습니다. 로컬 주소이며, 이미지도 해당 서버에 저장됩니다.

코드를 복사하세요 코드는 다음과 같습니다.


//다음 함수와 클래스는 인터넷에서 찾을 수 있습니다.
//url에서 도메인 이름 가져오기
function get_domain($url){
$pattern = "/[ w -] .(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";
preg_match($pattern, $url, $matches);
if(count($matches) > 0) {
return $matches[0];
}else{
$rs = pars_url($url)
$main_url = $rs[ " 호스트"];
if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
return $main_url; > $arr = 폭발(".",$main_url);
$count=count($arr)
$endArr = array("com","net","org","3322") ; //com.cn net.cn 등
if (in_array($arr[$count-2],$endArr)){
$domain = $arr[$count-3]."." . $arr[$count-2].".".$arr[$count-1];
}else{
$domain = $arr[$count-2].".".$arr [ $count-1]
}
return $domain;
}// end if(!strcmp...)
}// end if(count...)
} // 함수 종료
// 원격 바에서 로컬 서버로 이미지를 로드하는 클래스
class GetImage {
var $source
var $save_to;
함수 다운로드($method = 'curl') {
$info = @GetImageSize($this->source)
$mime = $info['mime']// 어떤 종류의 이미지인가요?
$type = substr(strrchr($mime, '/'), 1)
switch ($type){
case 'jpeg':
$image_create_func = ' ImageCreateFromJPEG';$image_save_func = 'ImageJPEG';
$new_image_ext = 'jpg';
// 최고 품질: 100
$quality = isSet($this->quality) ? ->quality : 100;
break;
case 'png':
$image_create_func = 'ImageCreateFromPNG'
$image_save_func = 'ImagePNG';
/ / 압축 수준: 0(압축 없음)부터 9까지
$quality = isSet($this->quality) ? $this->quality : 0
break; 'bmp':
$image_create_func = 'ImageCreateFromBMP';
$image_save_func = 'ImageBMP';
$new_image_ext = 'bmp'
break; $image_create_func = 'ImageCreateFromGIF';
$new_image_ext = 'gif';
case 'vnd.wap.wbmp':
$image_create_func 'ImageCreateFromWBMP';
$new_image_ext = 'bmp';
case 'xbm':
$image_createFromXBM'; $image_save_func = 'ImageXBM';
$new_image_ext = 'xbm';
기본값:
$image_create_func = 'ImageJPEG'; $new_image_ext = 'jpg';
}
if(isSet($this->set_extension)){
$ext = strrchr($this->source, "."); $strlen = strlen ($ext);
$new_name = basename(substr($this->source, 0, -$strlen)).'.'.$new_image_ext
}else{
$new_name = 기본 이름 ($this->source);
}
$save_to = $this->save_to."/blog_insert_temp_".time().mt_rand(1,99).".". $new_image_ext;
//출력 객체 구성은 $_FILE 변수와 동일합니다. 가져온 후에는 일반적인 이미지 업로드 과정과 동일합니다.
$img_info['name'] = basename($ this->source);
$img_info[' type'] = $mime;
$img_info['size'] = 1000
$img_info['tmp_name']
$img_info['error'] = 0;
if($method == 'curl'){
$save_image = $this->LoadImageCURL($save_to)
}elseif($method == 'gd'){
$img = $ image_create_func($this->source)
if(isSet($quality)){
$save_image = $image_save_func($img, $save_to , $quality);
}else{
$save_image = $image_save_func($img, $save_to)
}
}
return $img_info; LoadImageCURL($save_to){
$ch = cur_init( $this->source)
$fp = fopen($save_to, "wb")// URL 및 기타 적절한 옵션 설정
$options = array(CURLOPT_FILE => $fp,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_TIMEOUT => 60) // 1분 시간 초과(충분해야 함)
curl_setopt_array($ch, $options);
curl_exec($ch);
fclose($fp); 🎜>
위의 내용은 acdsee 2009 라이센스 코드를 포함하여 acdsee 2009 라이센스 코드 PHP 기사에서 로컬 코드에 대한 원격 이미지 수집을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.