Home > Backend Development > PHP Tutorial > Collect remote images in PHP articles to local code_PHP tutorial

Collect remote images in PHP articles to local code_PHP tutorial

WBOY
Release: 2016-07-21 15:44:48
Original
913 people have browsed it

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

Copy the code The code is as follows:

$message //Article content
//Regular (this is not yet)
$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 images and replace article positions
Copy code The code is as follows:

foreach ($img_array as $img){
//Determine whether the image is on your own website
if('xxx.com' != get_domain($img)){//If the image 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 picture to local location
//Save it to the album to get the location where the picture is saved
$img_path = pic_save($FILE,0,'');
//Text path Replace
$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 to 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 etc.
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 = 'gif';
break;
case 'vnd.wap.wbmp':
$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 = '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 = 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. After getting it, it is processed the same as usual image uploading.
$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);
}
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/320456.htmlTechArticleThe first step. First, extract all img... from the article using regular expressions. Copy the code as follows: $message //Article content//Regular (this is not yet) $reg = "/img[^]*src="(http://(.+)/(....
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