Home > Backend Development > PHP Tutorial > acdsee 2009 license code PHP article remote image collection to local code

acdsee 2009 license code PHP article remote image collection to local code

WBOY
Release: 2016-07-29 08:40:23
Original
1062 people have browsed it

The first step. First, extract all from the article using regular expressions.

Copy the code The code is as follows:


$message //Article content
//Regular (this is also regular) No)
$reg = "/]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";
//Store the extracted img address into the $img_array variable
preg_match_all($reg, $message, $img_array, PREG_PATTERN_ORDER);
//Filter duplicate images
$img_array = array_unique($img_array[1]);


Step 2. Loop the $img_array array. Save the image and replace the article position

Copy the code The code is as follows:


foreach ($img_array as $img){
//Determine whether it is Pictures on your own website
if('xxx.com' != get_domain($img)){//If this picture is not on your own server
//Read the image file
$Gimg = new GetImage();
$ Gimg->source = $img;
$Gimg->save_to = './data/temp/';
$FILE = $Gimg->download(); //Move the image to local
//Save to The photo album gets the location where the picture is saved
$img_path = pic_save($FILE,0,'');
//Text path replacement
$message = str_replace($img, $img_path, $message);
}
}


....At this time, the image in $message has been replaced with the local address of your own server, and the image is also saved on your own server.

Copy the code The code is as follows:


//The following function and class are found from the Internet.
//Get the domain name from the 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 = parse_url($url);
$main_url = $rs["host"];
if(!strcmp(long2ip(sprintf("%u",ip2long( $main_url))),$main_url)) {
return $main_url;
}else{
$arr = explode(".",$main_url);
$count=count($arr);
$endArr = array( "com","net","org","3322");//com.cn net.cn and other situations
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...)
}/ / end function
// Load images from the remote bar to the local server class
class GetImage {
var $source;
var $save_to;
var $quality;
function download($method = 'curl') {
$info = @GetImageSize($this->source);
$mime = $info['mime'];
// What sort of image?
$type = substr(strrchr($mime, '/'), 1) ;
switch ($type){
case 'jpeg':
$image_create_func = 'ImageCreateFromJPEG';
$image_save_func = 'ImageJPEG';
$new_image_ext = 'jpg';
// Best Quality: 100
$quality = isSet ($this->quality) ? $this->quality : 100;
break;
case 'png':
$image_create_func = 'ImageCreateFromPNG';
$image_save_func = 'ImagePNG';
$new_image_ext = 'png' ;
// Compression Level: from 0 (no compression) to 9
$quality = isSet($this->quality) ? $this->quality : 0;
break;
case 'bmp':
$image_create_func = 'ImageCreateFromBMP';
$image_save_func = 'ImageBMP';
$new_image_ext = 'bmp';
break;
case 'gif':
$image_create_func = 'ImageCreateFromGIF';
$image_save_func = 'ImageGIF'; $new_image_ext =
$image_create_func = 'ImageCreateFromWBMP';
$image_save_func = 'ImageWBMP';
$new_image_ext = 'bmp';
break;
case 'xbm':
$image_create_func = 'ImageCreateFromXBM';
$image_save_func = 'ImageXBM';
$new_image_ext = 'xbm';
break;
default:
$image_create_func = 'ImageCreateFromJPEG';
$image_save_func = 'I mageJPEG';
$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 = basename($this->source);
}
$ save_to = $this->save_to."/blog_insert_temp_".time().mt_rand(1,99).".".$new_image_ext;
//The output object composition is the same as the $_FILE variable and is uploaded as usual. The processing is the same
$img_info['name'] = basename($this->source);
$img_info['type'] = $mime;
$img_info['size'] = 1000;
$img_info[' tmp_name'] = $save_to;
$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;
}
function LoadImageCURL($save_to){
$ch = curl_init($this->source) ;
$fp = fopen($save_to, "wb");
// set URL and other appropriate options
$options = array(CURLOPT_FILE => $fp,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1 ,
CURLOPT_TIMEOUT => 60); // 1 minute timeout (should be enough)
curl_setopt_array($ch, $options);
curl_exec($ch);
curl_close($ch);
fclose($fp);
}
}


The above introduces the remote image collection to local code in the acdsee 2009 license code PHP article, including the acdsee 2009 license code. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template