- /**
- *@ATANG 2013-4-6 22:19
- *@哈哈
- */
- set_time_limit(0);
- error_reporting(E_ERROR){
- print_r('
- +----- -------------------------------------------------- +
- 使用方法: php ' .$argv[0].' css パスの種類 (0 はリモート、1 はローカル) CSS ファイルのパス 画像保存ディレクトリ
- 例:
- php.exe '.$argv[0].' 0 http ://www.xxx .com/index.css 画像
- +----------------------------------- -------------- --------+
- ');
- exit()
- }
- //リモート CSS
- if($argv[1]==0) ){
- $host = getParse($argv[2], 'host');
- $savePath = getSavePath($argv[3]);
- //print_r( $images);
- $imagesurls($images,$ argv[2]);
- imageDowner($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];
- }
- /*
- * css ファイルの相対ディレクトリ処理関数
- * $path path
- */
- function getNocssPath($path){
- global $host;
- $tempLinkmages='' // 同等のパスを取得します
- $tempPath =explode('/',$path);
- for($i=1 ;$i<(count($tempPath)-2);$i++){
- $tempLinkmages .= $tempPath[$i].'/ ';
- }
- $xdImage = $host.$tempLinkmages;
- //同等のパスを取得
-
-
- /*
- * 画像接続取得関数
- * $images 配列取得
- * cssLink css ファイル リンク
- */
- function getImagesLinks($imagesArray,$cssLink){
- global $host;
- $urlImages = array();
- foreach($imagesArray as $key=>$value){
- if(pathCheck($value)){
- if((!in_array(($host.$ 値),$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 imageDowner($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{
- basename( $urlImagesOk[$key]).' ダウンロードに失敗しました
- '); /print_r($urlImagesOk);
- }
- /*
- * 相対パス絶対パス決定関数
- * $imageUrl 画像リンク配列
- * true は絶対パス
- * false は等価パス
- */
- function pathCheck($imageUrl ){
- if(preg_match('|^(/)|',$imageUrl)){
- return true;
- }else{
- }
- }
-
- /*
- * 画像ダウンロード関数
- * $url画像リンク
- * $filename 画像名
- */
- functiongrabImage($url, $filename){
- global $savePath;
- if($ url == '') {
- $url が空の場合、 return 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()
- $size = strlen($img_data);
- }else{
- ob_end_clean();
- false を返します。
- if(($local_file = fopen($savePath.$filename , 'a'))&&(fwrite($local_file, $img_data)))
- {
- fclose($local_file);
- true を返します。
- }
- }
- /*
- * 保存目录
- */
- function getSavePath($savepath){
- $savePath = $savepath;
- $savePath = ディレクトリ名(__FILE__).$savePath;
- $savePath を返します;
- }
- /*
- * URL を解析
- */
- function getParse($host,$type){
- $baseurl = parse_url($host);
- $baseurl[$type].'/'; を返します。
-
- //echo $baseurl;
- }
- ?>
复制發
|