当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP批量下载html与css中图片文件实例

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-01 14:12:12 浏览: 评论:0 

最近一直很忙,遇到一个手工活,需要下载一些远程的图片,一共一百多张,如果通过手工一张一张的保存,也太耗费时间了,于是上网google了一把,找到PHP批量下载图片文件的方法,原文是出自平凡世界博客的一片关于如何使用PHP批量下载CSS文件中的图片的文章,经过研究改写了一下就可以使用了,方便快捷多了.

PHP批量下载图片文件代码:

  1. set_time_limit(0);//设置PHP超时时间 
  2. $imagesURLArray = array_unique($imagesURLArray ); 
  3.  
  4. foreach($imagesURLArray as $imagesURL) { 
  5.     echo $imagesURL
  6.     echo " 
  7. "; 
  8.     file_put_contents(basename($imagesURL), file_get_contents($imagesURL)); 

原理很简单,通过一个含有图片地址的数组循环,然后使用PHP的file_get_contents函数取得图片,在使用file_put_contents函数把图片保存下来.

注意:一定要加上设置PHP超时时间.

附上原文中通过php下载css中图片的代码:

  1. <?php 
  2. /* 
  3. More & Original PHP Framwork 
  4. Copyright (c) 2007 - 2008 IsMole Inc. 
  5. Author: kimi 
  6. Documentation: 下载样式文件中的图片,水水专用扒皮工具 
  7. */ 
  8.  
  9. //note 设置PHP超时时间 
  10. set_time_limit(0); 
  11.  
  12. //note 取得样式文件内容 
  13. $styleFileContent = file_get_contents('images/style.css'); 
  14.  
  15. //note 匹配出需要下载的URL地址 
  16. preg_match_all("/url((.*))/"$styleFileContent$imagesURLArray); 
  17.  
  18. //note 循环需要下载的地址,逐个下载 
  19. $imagesURLArray = array_unique($imagesURLArray[1]); 
  20.     foreach($imagesURLArray as $imagesURL) { 
  21.     file_put_contents(basename($imagesURL), file_get_contents($imagesURL)); 
  22. ?> 

后来又找到一个php批量下载图片文件,假如现在我现在发现一个网站上的图片保存方式是1001 – 1999目录下都存放着从1开始(数量不等)的.jpg图片,现在我决定用php的方法将图片按照自己需要的样式直接下载到本地.

假如图片开始地址为:http://image.phpfensi.com/img/1001/1.jpg

这时我将1001处放到变量$id,1.jpg放到变量$num.jpg,保存的文件名为$id_$num.jpg,首先确保在此文件执行目录下面建一个名为img的并且可写的文件夹,代码如下:

  1. $id= isset($_GET['id']) && intval($_GET['id']) && $_GET['id']>1000 ? $_GET['id'] : 1001; 
  2. $num= isset($_GET['num']) && intval($_GET['num']) ? $_GET['num'] : 1; 
  3. $url="http://image.xxx.com/img/{$id}/{$num}.jpg"
  4.  
  5. $array=get_headers($url,1); 
  6.  
  7. //通过返回200和400来判断是增加$id或者$num 
  8. if(preg_match('/200/',$array[0])){ 
  9.  $new_url="?id={$id}&num=".($num+1); 
  10.  
  11.  ob_start(); 
  12.  readfile($url); 
  13.  $img = ob_get_contents(); 
  14.  ob_end_clean();  
  15.  
  16.  $filename="./img/{$id}_{$num}.jpg"
  17.  $f=fopen($filename,'a'); 
  18.  fwrite($f,$img); 
  19.  fclose($f); 
  20. }else
  21.  $new_url="?id=".($id+1)."&num=1"
  22. if($id > 1999) exit('全部完成'); 
  23. //显示当前的状态 
  24. echo $url,' - ',$array[0],'<script>location.href="'.$new_url.'";</script>';  

Tags: PHP批量下载 html图片文件

分享到: