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

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

WBOY
WBOYオリジナル
2016-07-13 17:38:281055ブラウズ

今日この関数を書いて、php100 の友達と共有しました

最初のステップでは、正規表現を使用して記事からすべての を抽出します。
$message //記事の内容
//通常 (これはまだです)
$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]);
[/php]
ステップ 2. $img_array 配列をループして画像を保存し、記事の位置を置き換えます
[php]
foreach ($img_array を $img として){
//写真が自分のウェブサイトからのものかどうかを判断します
If(xxx.com != get_domain($img)){// この写真が自分のサーバー上にない場合
//画像ファイルを読み込みます
$Gimg = new GetImage();
$Gimg->source = $img;
$Gimg->save_to = ./data/temp/;
$FILE = $Gimg->down​​load() //画像をローカルに移動
; //アルバムに保存して写真の保存場所を取得します
$img_path = pic_save($FILE,0,);
//テキストパスの置換
$message = str_replace($img, $img_path, $message);
                                                }
}

....この時点で、$message 内の画像はサーバーのローカル アドレスに置き換えられ、画像もサーバーに保存されます。
[/php]


[php]
//次の関数とクラスはインターネット上で見つかります。

//URLからドメイン名を取得
関数 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];
}その他{
$rs = parse_url($url);
$main_url = $rs["ホスト"];
If(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
return $main_url;
}その他{
$arr =explode(".",$main_url);
$count=count($arr);
$endArr = array("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];
}その他{
$domain = $arr[$count-2].".".$arr[$count-1];
}
return $domain;
}// end if(!strcmp...)
}// end if(count...)
}//関数を終了します

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486497.html技術記事今日はこのような関数を作成しました。最初のステップとして、記事からすべての画像を抽出します。$message //Article content//正規表現 (this.まだです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。