ホームページ >バックエンド開発 >PHPチュートリアル >PHP が記事内のリモート画像を local_PHP チュートリアルに収集する
今日この関数を書いて、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->download() //画像をローカルに移動
;
//アルバムに保存して写真の保存場所を取得します
$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...)
}//関数を終了します