《PHP應用:php實現的css文件背景圖片下載器代碼》要點:
本文介紹了PHP應用:php實現的css文件背景圖片下載器代碼,希望對您有用。如果有疑問,可以聯系我們。
本文實例講述了php實現的css文件背景圖片下載器代碼.分享給大家供大家參考.具體實現辦法如下:PHP教程
下載css文件里面的背景圖片是我們這些盜版份子長期搞的事情,下載個css圖片下載器常出現各種廣告彈窗,實在扛不住.這里就提供了一個php版的css文件背景圖片下載器給大家.PHP教程
把文件放到php程序目錄 dos下面 php.exe cssImages.php 0 http://www.xxxx.com/css/style.css \images\PHP教程
先在php程序目錄建個images文件夾,呵呵,貼代碼:
PHP教程
代碼如下:
<?php???
/**??
*@阿唐 2013-4-6 22:19???
*@呵呵??
*/???
set_time_limit(0);???
error_reporting(E_ERROR);???
if($argc<4){???
print_r('???
?+-------------------------------------------------+???
Usage: php '.$argv[0].' css路徑類型(0為遠程、1為本地) css文件路徑 圖片保存目錄???
Example:????
php.exe '.$argv[0].' 0 http://www.xxx.com/index.css \images\???
?+-------------------------------------------------+???
');???
exit();???
}???
//遠程css???
if($argv[1]==0){???
??? $host = getParse($argv[2],'host');???
??? $savePath = getSavePath($argv[3]);???
??? $images = getCssImagesArray($argv[2]);???
??? //print_r($images);???
??? $imagesurls = getImagesLinks($images,$argv[2]);???
??? imagesDowner($imagesurls);???
}???
//本地css開始???
if($argv[1]==1){???
??? //懶得寫了,呵呵,這個沒多大意義???
}???
/*??
?* css圖片分析函數??
?* $csspath? css文件路徑??
?*/???
function getCssImagesArray($csspath){???
??? $cssFile = file_get_contents($csspath);???
??? $images = array();???
??? preg_match_all("|url\((.+)\)|i",$cssFile,$images);???
??? $images = $images[1];???
??? return $images;???
}???
/*??
?* css文件相對目錄處理函數??
?* $path 路徑??
?*/???
function getNocssPath($path){???
??? global $host;???
??? $tempLinkmages='';???
??? //相當路徑獲取???
??? $tempPath = explode('/',$path);???
??? for($i=1;$i<(count($tempPath)-2);$i++){???
??????? $tempLinkmages .= $tempPath[$i].'/';???
??? }???
??? $xdImage = $host.$tempLinkmages;???
??? return $xdImage;???
??? //相當路徑獲取???
}???
???
/*??
?* 圖片連接獲取函數??
?* $images array 所有需要獲取的images數組??
?* cssLink css文件鏈接??
?*/???
function getImagesLinks($imagesArray,$cssLink){???
global $host;???
$urlImages = array();???
??? foreach($imagesArray as $key=>$value){???
??????? if(pathCheck($value)){???
??????????? if((!in_array(($host.$value),$urlImages))){???
??????????????? $urlImages[$key] = $host.$value;???
??????????? }???
??????? }else{???
??????????? if((!in_array((getNocssPath(getParse($cssLink,'path')).$value),$urlImages))){???
??????????????? $urlImages[$key] = getNocssPath(getParse($cssLink,'path')).$value;???
??????????? }???
??????? }???
??? }???
??? return $urlImages;???
}???
???
/*??
?* 圖片獲取??
?* $urlImages需要下載的圖片數組??
?*/???
function imagesDowner($urlImages){???
//print_r($urlImages);???
??? foreach($urlImages as $key=>$value){???
??????? $urlImagesOk[$key] = str_replace('//','/',$value);???
??????? $urlImagesOk[$key] = str_replace('"','',$urlImagesOk[$key]);???
??????? $urlImagesOk[$key] = str_replace("'",'',$urlImagesOk[$key]);???
??????? $urlImagesOk[$key] = 'http://'.$urlImagesOk[$key];???
??????? if(grabImage($urlImagesOk[$key],basename($urlImagesOk[$key]))){???
??????????? print_r(???
basename($urlImagesOk[$key]).' 文件下載成功???
');???
??????? }else{???
??????????? print_r(???
basename($urlImagesOk[$key]).'? 下載失敗???
');???
??????? }???
??? }???
??? //print_r($urlImagesOk);???
}???
/*??
?* 相對路徑絕對路徑判定函數??
?* $imageUrl 圖片鏈接數組??
?* true 為絕對路徑??
?* false 為相當路徑??
?*/???
function pathCheck($imageUrl){???
??? if(preg_match('|^(\/)|',$imageUrl)){???
??????? return true;???
??? }else{???
??????? return false;???
??? }???
}???
???
/*??
?* 圖片下載函數??
?* $url 圖片鏈接??
?* $filename圖片名字??
?*/???
function grabImage($url, $filename){???
??? global $savePath;????
??? if($url == '') {???
??????? return false; //如果 $url 為空則返回 false;???
???????????
??? }???
??? $ext_name = strrchr($url, '.'); //獲取圖片的擴展名???
??? if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') {???
??????? return false; //格式不在允許的范圍???
???????????
??? }???
??? if($filename == '') {???
??????? return false; //名稱無效???
???????????
??? }???
??? //開始捕獲???
??? ob_start();???
??? if(readfile($url)){???
??????? $img_data = ob_get_contents();???
??????? ob_end_clean();???
??????? $size = strlen($img_data);???
??? }else{???
??? ob_end_clean();???
??? return false;???
??? }???
??? if(($local_file = fopen($savePath.$filename , 'a'))&&(fwrite($local_file, $img_data)))???
??? {???
??????? fclose($local_file);???
??????? return true;???
??? }???
}???
/*??
?* 保存目錄??
?*/???
function getSavePath($savepath){???
??? $savePath = $savepath;???
??? $savePath = dirname(__FILE__).$savePath;???
??? return $savePath;???
}???
/*??
?* 解析url??
?*/???
function getParse($host,$type){???
??? $baseurl = parse_url($host);???
??? return $baseurl[$type].'/';???
???
//echo $baseurl;???
}???
?>
希望本文所述對大家的PHP程序設計有所贊助.PHP教程
歡迎參與《PHP應用:php實現的css文件背景圖片下載器代碼》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14091.html