php 远程图片保存到本地的函数类

  <?php

  //

  // Function: 获取远程图片并把它保存到本地

  //

  //

  // 确定您有把文件写入本地服务器的权限

  //

  //

  // 变量说明:

  // $url 是远程图片的完整URL地址,不能为空。

  // $filename 是可选变量: 如果为空,本地文件名将基于时间和日期

  // 自动生成.

  function GrabImage($url,$filename="") {

  if($url==""):return false;endif;

  if($filename=="") {

  $ext=strrchr($url,".");

  if($ext!=".gif" && $ext!=".jpg"):return false;endif;

  $filename=date("dMYHis").$ext;

  }

  ob_start();

  readfile($url);

  $img = ob_get_contents();

  ob_end_clean();

  $size = strlen($img);

  $fp2=@fopen($filename, "a");

  fwrite($fp2,$img);

  fclose($fp2);

  return $filename;

  }

  $img=GrabImage("/upload/20081208002838680.jpg","");

  if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;

  ?>dedecms中的: if(!empty($saveremoteimg))

  {

  $body = stripslashes($body);

  $img_array = array();

  preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|bmp|png))/isU",$body,$img_array);

  $img_array = array_unique($img_array[2]);

  set_time_limit(0);

  $imgUrl = $img_dir."/".strftime("%Y%m%d",time());

  $imgPath = $base_dir.$imgUrl;

  $milliSecond = strftime("%H%M%S",time());

  if(!is_dir($imgPath)) @mkdir($imgPath,0777);

  foreach($img_array as $key =>$value)

  {

  $value = trim($value);

  $get_file = @file_get_contents($value);

  $rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3);

  $fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3);

  if($get_file)

  {

  $fp = @fopen($rndFileName,"w");

  @fwrite($fp,$get_file);

  @fclose($fp);

  }

  $body = ereg_replace($value,$fileurl,$body);

  }

  $body = addslashes($body);

  }