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

PHP 記事内のリモート画像をローカル コードに収集する_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:44:48
オリジナル
922 人が閲覧しました

最初のステップ。まず、正規表現を使用して記事からすべての を抽出します

コードは次のとおりです:
$message //Article content
//通常 (これも通常です) いいえ)
$reg = "/]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp ))"/isU";
//抽出された画像アドレスを $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/'; //画像をローカルに移動します
//保存先フォトアルバムは画像が保存される場所を取得します
$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) {
$matches[0];
}else{
$rs = parse_url($url) = $rs["host"]
if(!strcmp(sprintf("%u",ip2long) ( $main_url))),$main_url)) {
return $main_url;
}else{
$count=count($arr); ( "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 $quality
function download($method = 'curl') {
$info = @GetImageSize($this->source);
$mime = $info['mime']
// どのような画像ですか?
$type = substr($mime, '/'), 1) ;
switch ($type){
case 'jpeg':
$image_create_func = 'ImageJPEG';
$new_image_ext = 'jpg'; = isSet ($this->品質) : 100;
case 'png':
$image_save_func = 'ImagePNG'; png' ;
// 圧縮レベル: 0 (圧縮なし) から 9 まで
$quality = isSet($this->quality) : 0;
case 'bmp':
$image_create_func = 'ImageCreateFromBMP';
$new_image_ext = 'bmp';
case 'gif':
$image_save_func = '画像GIF'; $new_image_ext =
$image_create_func = 'ImageCreateFromWBMP';
$new_image_ext = 'bmp'
case 'xbm':
$image_createFromXBM'; image_save_func = 'ImageXBM';
$new_image_ext = 'xbm';
デフォルト:
$image_create_func = 'I mageJPEG';
if($this -> ;set_extension)){
$ext = strrchr($this->source, ".");
$strlen = strlen($ext);
$ new_name (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;
//出力オブジェクトの構成は $_FILE 変数と同じであり、処理は通常と同じです
$img_info['name' ] = ベース名($this->ソース);
$img_info['タイプ'] = $mime;
$img_info['tmp_name'] = $img_info; ['エラー'] = 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);
$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");
// URL とその他の適切なオプションを設定します
$options = array(CURLOPT_FILE => $fp,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 1 ,
CURLOPT_TIMEOUT => 60); / 1 分のタイムアウト (十分なはずです)
curl_setopt_array($ch, $options);
curl_close($ch);



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

www.bkjia.com

tru​​e

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

技術記事

最初のステップでは、正規表現を使用して記事からすべての画像を抽出します。次のコードをコピーします。 $message //記事の内容//正規表現 (これはまだです) $reg = "/img[^] *src= "(http://(.+)/(....





ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート