程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP把文章中的遠程圖片采集到本地

PHP把文章中的遠程圖片采集到本地

編輯:關於PHP編程

今天寫了一個這個功能, 拿出來跟php100的朋友一起分享

第一步. 先從文章中把所有<img ...> 用正則 摳出來.

    $message   //文章內容
    //正則(這個還不是)
    $reg = "/<img[^>]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";
    //把摳出來的 img 地址存放到 $img_array 變量中
    preg_match_all($reg, $message, $img_array, PREG_PATTERN_ORDER);
    //過濾重復的圖片
    $img_array = array_unique($img_array[1]);
[/php]
第二步. 把$img_array 數組循環一下. 做圖片保存和文章位置替換
[php]
    foreach ($img_array as $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中獲得域名
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) {
        return $matches[0];
    }else{
        $rs = parse_url($url);
        $main_url = $rs["host"];
        if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {
            return $main_url;
        }else{
            $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];
            }else{
                $domain =  $arr[$count-2].".".$arr[$count-1];
            }
            return $domain;
        }// end if(!strcmp...)
    }// end if(count...)
}// end function

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved