ホームページ  >  記事  >  バックエンド開発  >  PHP 記事内のリモート画像を local_PHP チュートリアルに収集する

PHP 記事内のリモート画像を local_PHP チュートリアルに収集する

WBOY
WBOYオリジナル
2016-07-20 11:06:161045ブラウズ

$message //記事の内容

//通常 (まだです)

$reg = "/]*src="(http://(. + )/(.+).(jpg|gif|bmp|bnp))"/isU";

//抽出したimgアドレスを$img_arrayに格納 variable

preg_match_all ( $reg, $message, $img_array, PREG_PATTERN_ORDER);

//重複画像をフィルタリング

$img_array = array_unique ($img_array[1]);Copycode

ステップ 2. $img_array array をループして、記事の位置を置き換えます。(Foreach (re $ IMG_ARAY As $ IMG) {
// それが自分の Web サイト上の画像であるかどうかを判断します
If (
'xxx.com '
! = ) -&>save_to= './ data/temp/'; = str_replace
(

$img
, $img_path, $message
);
この時点で、$message の画像はローカル アドレスに置き換えられています。自分のサーバー、画像も自分のサーバーに保存されますコードをコピー
//次の
関数
とクラスはインターネットから見つけます// URL から ドメイン名を取得関数
g et_domain
($url){ $pattern = " / [w-]+ .(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/"
;

    
preg_match($pattern, $url, $matches);

if(
count( $一致) >0 ) {

return
$matches[0];

}else{

$rs = parse_url($url);

$main_url = $rs["ホスト"];

if(!
strcmp() long2ip(sprintf(" %u",ip2long($main_url))),$main_url)) {

return
$main_url ;

}else{

$arr = explode(".",$main_url);

$count= カウント($arr);

$endArr = array("com","net","org","3322" );//コム。 cn net.cn 等情况

if (in_array($arr[$count-2 ]、$endArr)){

$ドメイン = $arr[$count-3].".".$arr[ $count- 2]. "。".$arr[$count-1];

}

$count
-2].".".$arr[$count-1]; }// end if(count...) }//end function


//リモートバーからローカルサーバーに画像をロードしますクラス
クラス
GetImage
{

var $source
;
var $save_to
;

var

$quality
;関数
ダウンロード

(
$メソッド=
'カール'
) {
$info
= @GetImageSize
(

$this
->source); $マイム=
$info
[「マイム」]; ime'/')、1);
switch (
$type){ケース 'jpeg':            $image_create_func = 'ImageCreateFromJPEG';

$image_save_func = 'ImageJPEG' ;

$new_image_ext = 'jpg';



// 最高品質: 100

$quality = isSet($this-> 品質) ? $this->品質: 100;

休憩;



ケース
'png':

$image_create_func = ' ImageCreateFromPNG';

$image_save_func = 'ImagePNG';

$new_image_ext = 'png';



// 圧縮 レベル: 0 (圧縮なし) から 9 まで

$quality = isSet($this->quality) ? $this->品質: 0;

休憩;



ケース
'bmp':

$image_create_func = ' ImageCreateFromBMP';

$image_save_func = 'ImageBMP';

$new_image_ext = 'bmp';

休憩;



        case
'gif':

$image_create_func = 'ImageCreateFromGIF';

$image_save_func = 'ImageGIF';

$new_image_ext = 'gif';



休憩;



ケース
'vnd.wap.wbmp':

$image_create_func = 'WBMPからの画像作成';

$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 = 'ImageCreate FromJPEG';

$image_save_func = 'ImageJPEG';

$new_image_ext = 'jpg';

}



if(isSet(
$this->set_extension )){

$ext = strrchr($this->ソース, ".");
️ name
(substr($this- >source
,
、-$strlen)).'.'$new_image_ext;}else { $new_name = basename($this-> 出典); }



$save_to = $this-> save_to."/blog_insert_temp_"
時間

().

mt_rand
(1,99).".". $ new_image_ext // 出力オブジェクトの構成は同じです$ _file 変数 ベース名($this->source); $img_info['type'] = $mime

;
$ img_info

[
'サイズ'] = 1000; $img_info['tmp_name'] = $save_to
;
$ img_info ['エラー'] = 0
;
if($method == 'curl' ){        $save_image = $this->LoadImageCURL($save_to);

}elseif(
$method == 「ゴッド」 ){

$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);

}



}

戻る
$img_info;

}



function
LoadImageCURL($save_to){

$ch = curl_init($this ->ソース);

$fp = fopen($save_to, "wb");



// set URL およびその他の適切なオプション

$options = array(CURLOPT_FILE => $fp,

CURLOPT_HEADER => 0

CURLOPT_FOLLOWLOCATION => 1,

60); //1 分のタイムアウト (十分なはずです) $ch$オプション

);

);
); http://www.bkjia.com/PHPjc/445035.htmlwww.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/445035.html

技術記事
$message //記事の内容//通常(まだです) $reg = /img[^]*src=(http://(.+)/(.+).(jpg|gif|bmp|bnp) ) /isU; //抽出した画像アドレスを $img_array 変数 preg_match_a に格納します...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。