php css文件背景图片下载器实现代码

原创
2016-07-25 08:52:28 681浏览
  1. /**
  2. *@阿唐 2013-4-6 22:19
  3. *@呵呵
  4. */
  5. set_time_limit(0);
  6. error_reporting(E_ERROR);
  7. if($argc<4){
  8. print_r('
  9. +-------------------------------------------------+
  10. Usage: php '.$argv[0].' css路径类型(0为远程、1为本地) css文件路径 图片保存目录
  11. Example:
  12. php.exe '.$argv[0].' 0 http://www.xxx.com/index.css \images\
  13. +-------------------------------------------------+
  14. ');
  15. exit();
  16. }
  17. //远程css
  18. if($argv[1]==0){
  19. $host = getParse($argv[2],'host');
  20. $savePath = getSavePath($argv[3]);
  21. $images = getCssImagesArray($argv[2]);
  22. //print_r($images);
  23. $imagesurls = getImagesLinks($images,$argv[2]);
  24. imagesDowner($imagesurls);
  25. }
  26. //本地css开始
  27. if($argv[1]==1){
  28. //懒得写了,呵呵,这个没多大意义
  29. }
  30. /*
  31. * css图片分析函数
  32. * $csspath css文件路径
  33. */
  34. function getCssImagesArray($csspath){
  35. $cssFile = file_get_contents($csspath);
  36. $images = array();
  37. preg_match_all("|url\((.+)\)|i",$cssFile,$images);
  38. $images = $images[1];
  39. return $images;
  40. }
  41. /*
  42. * css文件相对目录处理函数
  43. * $path 路径
  44. */
  45. function getNocssPath($path){
  46. global $host;
  47. $tempLinkmages='';
  48. //相当路径获取
  49. $tempPath = explode('//m.sbmmt.com/m/',$path);
  50. for($i=1;$i<(count($tempPath)-2);$i++){
  51. $tempLinkmages .= $tempPath[$i].'//m.sbmmt.com/m/';
  52. }
  53. $xdImage = $host.$tempLinkmages;
  54. return $xdImage;
  55. //相当路径获取
  56. }
  57. /*
  58. * 图片连接获取函数
  59. * $images array 所有需要获取的images数组
  60. * cssLink css文件链接
  61. */
  62. function getImagesLinks($imagesArray,$cssLink){
  63. global $host;
  64. $urlImages = array();
  65. foreach($imagesArray as $key=>$value){
  66. if(pathCheck($value)){
  67. if((!in_array(($host.$value),$urlImages))){
  68. $urlImages[$key] = $host.$value;
  69. }
  70. }else{
  71. if((!in_array((getNocssPath(getParse($cssLink,'path')).$value),$urlImages))){
  72. $urlImages[$key] = getNocssPath(getParse($cssLink,'path')).$value;
  73. }
  74. }
  75. }
  76. return $urlImages;
  77. }
  78. /*
  79. * 图片获取
  80. * $urlImages需要下载的图片数组
  81. */
  82. function imagesDowner($urlImages){
  83. //print_r($urlImages);
  84. foreach($urlImages as $key=>$value){
  85. $urlImagesOk[$key] = str_replace('//','//m.sbmmt.com/m/',$value);
  86. $urlImagesOk[$key] = str_replace('"','',$urlImagesOk[$key]);
  87. $urlImagesOk[$key] = str_replace("'",'',$urlImagesOk[$key]);
  88. $urlImagesOk[$key] = 'http://'.$urlImagesOk[$key];
  89. if(grabImage($urlImagesOk[$key],basename($urlImagesOk[$key]))){
  90. print_r(
  91. basename($urlImagesOk[$key]).' 文件下载成功
  92. ');
  93. }else{
  94. print_r(
  95. basename($urlImagesOk[$key]).' 下载失败
  96. ');
  97. }
  98. }
  99. //print_r($urlImagesOk);
  100. }
  101. /*
  102. * 相对路径绝对路径判定函数
  103. * $imageUrl 图片链接数组
  104. * true 为绝对路径
  105. * false 为相当路径
  106. */
  107. function pathCheck($imageUrl){
  108. if(preg_match('|^(\/)|',$imageUrl)){
  109. return true;
  110. }else{
  111. return false;
  112. }
  113. }
  114. /*
  115. * 图片下载函数
  116. * $url 图片链接
  117. * $filename图片名字
  118. */
  119. function grabImage($url, $filename){
  120. global $savePath;
  121. if($url == '') {
  122. return false; //如果 $url 为空则返回 false;
  123. }
  124. $ext_name = strrchr($url, '.'); //获取图片的扩展名
  125. if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') {
  126. return false; //格式不在允许的范围
  127. }
  128. if($filename == '') {
  129. return false; //名称无效
  130. }
  131. //开始捕获
  132. ob_start();
  133. if(readfile($url)){
  134. $img_data = ob_get_contents();
  135. ob_end_clean();
  136. $size = strlen($img_data);
  137. }else{
  138. ob_end_clean();
  139. return false;
  140. }
  141. if(($local_file = fopen($savePath.$filename , 'a'))&&(fwrite($local_file, $img_data)))
  142. {
  143. fclose($local_file);
  144. return true;
  145. }
  146. }
  147. /*
  148. * 保存目录
  149. */
  150. function getSavePath($savepath){
  151. $savePath = $savepath;
  152. $savePath = dirname(__FILE__).$savePath;
  153. return $savePath;
  154. }
  155. /*
  156. * 解析url
  157. */
  158. function getParse($host,$type){
  159. $baseurl = parse_url($host);
  160. return $baseurl[$type].'//m.sbmmt.com/m/';
  161. //echo $baseurl;
  162. }
  163. ?>
复制代码


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条:php下载css文件中图片的实现代码 下一条:php curl_init函数用法教程详解

相关文章

查看更多