ホームページ  >  記事  >  バックエンド開発  >  PHP CSS ファイルの背景画像ダウンローダーの実装コード

PHP CSS ファイルの背景画像ダウンローダーの実装コード

WBOY
WBOYオリジナル
2016-07-25 08:52:28959ブラウズ
  1. /**
  2. *@ATANG 2013-4-6 22:19
  3. *@哈哈
  4. */
  5. set_time_limit(0);
  6. error_reporting(E_ERROR){
  7. print_r('
  8. +----- -------------------------------------------------- +
  9. 使用方法: php ' .$argv[0].' css パスの種類 (0 はリモート、1 はローカル) CSS ファイルのパス 画像保存ディレクトリ
  10. 例:
  11. php.exe '.$argv[0].' 0 http ://www.xxx .com/index.css 画像
  12. +----------------------------------- -------------- --------+
  13. ');
  14. exit()
  15. }
  16. //リモート CSS
  17. if($argv[1]==0) ){
  18. $host = getParse($argv[2], 'host');
  19. $savePath = getSavePath($argv[3]);
  20. //print_r( $images);
  21. $imagesurls($images,$ argv[2]);
  22. imageDowner($imagesurls);
  23. //ローカル CSS が開始されます
  24. if($argv[1]==1){
  25. / /書くのがめんどくさい、笑、あまり意味がありません
  26. }
  27. /*
  28. * CSS 画像解析関数
  29. * $csspath CSS ファイルのパス
  30. */
  31. function getCssImagesArray($csspath){
  32. $cssFile = file_get_contents( $csspath);
  33. $images = array();
  34. preg_match_all("|url ((.+))|i",$cssFile,$images);
  35. $images = $images[1];
  36. }
  37. /*
  38. * css ファイルの相対ディレクトリ処理関数
  39. * $path path
  40. */
  41. function getNocssPath($path){
  42. global $host;
  43. $tempLinkmages='' // 同等のパスを取得します
  44. $tempPath =explode('/',$path);
  45. for($i=1 ;$i<(count($tempPath)-2);$i++){
  46. $tempLinkmages .= $tempPath[$i].'/ ';
  47. }
  48. $xdImage = $host.$tempLinkmages;
  49. //同等のパスを取得
  50. /*
  51. * 画像接続取得関数
  52. * $images 配列取得
  53. * cssLink css ファイル リンク
  54. */
  55. function getImagesLinks($imagesArray,$cssLink){
  56. global $host;
  57. $urlImages = array();
  58. foreach($imagesArray as $key=>$value){
  59. if(pathCheck($value)){
  60. if((!in_array(($host.$ 値),$urlImages))){
  61. $urlImages[$key] = $host.$value;
  62. }
  63. }else{
  64. if((!in_array((getNocssPath(getParse($cssLink,'path'))).$value),$urlImages))){
  65. $urlImages[$key] = getNocssPath(getParse($cssLink,'path') )).$value;
  66. }
  67. }
  68. }
  69. return $urlImages;
  70. }
  71. / *
  72. * 画像の取得
  73. * $urlImages はダウンロードする必要がある画像の配列です
  74. */
  75. function imageDowner($urlImages) ){
  76. //print_r($urlImages);
  77. foreach($urlImages as $key=>$value){
  78. $urlImagesOk[$key] = str_replace('//','/',$value); $urlImagesOk[$key] = str_replace('"','',$urlImagesOk[$key]);
  79. $urlImagesOk [$key] = str_replace("'",'',$urlImagesOk[$key]);
  80. $urlImagesOk[$key] = 'http://'.$urlImagesOk[$key];
  81. if(grabImage($ urlImagesOk[$key],basename($urlImagesOk[$key]))){
  82. print_r(
  83. basename ($urlImagesOk[$key]).' ファイルは正常にダウンロードされました
  84. ');
  85. }else{
  86. basename( $urlImagesOk[$key]).' ダウンロードに失敗しました
  87. '); /print_r($urlImagesOk);
  88. }
  89. /*
  90. * 相対パス絶対パス決定関数
  91. * $imageUrl 画像リンク配列
  92. * true は絶対パス
  93. * false は等価パス
  94. */
  95. function pathCheck($imageUrl ){
  96. if(preg_match('|^(/)|',$imageUrl)){
  97. return true;
  98. }else{
  99. }
  100. }
  101. /*
  102. * 画像ダウンロード関数
  103. * $url画像リンク
  104. * $filename 画像名
  105. */
  106. functiongrabImage($url, $filename){
  107. global $savePath;
  108. if($ url == '') {
  109. $url が空の場合、 return false;
  110. }
  111. $ext_name = strrchr($url, '.'); //画像の拡張子を取得します
  112. if($ ext_name != '.gif' && $ext_name != '.jpg' && $ ext_name != '.bmp' && $ext_name != '.png') {
  113. return false; //形式が許可範囲内にありません
  114. }
  115. if($filename == '') {
  116. return false; //名前が無効です
  117. }
  118. //キャプチャを開始します
  119. ob_start(); if(readfile($url)){
  120. $img_data = ob_get_contents()
  121. $size = strlen($img_data);
  122. }else{
  123. ob_end_clean();
  124. false を返します。
  125. if(($local_file = fopen($savePath.$filename , 'a'))&&(fwrite($local_file, $img_data)))
  126. {
  127. fclose($local_file);
  128. true を返します。
  129. }
  130. }
  131. /*
  132. * 保存目录
  133. */
  134. function getSavePath($savepath){
  135. $savePath = $savepath;
  136. $savePath = ディレクトリ名(__FILE__).$savePath;
  137. $savePath を返します;
  138. }
  139. /*
  140. * URL を解析
  141. */
  142. function getParse($host,$type){
  143. $baseurl = parse_url($host);
  144. $baseurl[$type].'/'; を返します。
  145. //echo $baseurl;
  146. }
  147. ?>
复制發


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。