$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.comtrue
http://www.bkjia.com/PHPjc/445035.html
技術記事 $message //記事の内容//通常(まだです) $reg = /img[^]*src=(http://(.+)/(.+).(jpg|gif|bmp|bnp) ) /isU; //抽出した画像アドレスを $img_array 変数 preg_match_a に格納します...