程序写得不怎么完善,如朋友修改后请发我一份。
[PHP]
<?
/*
远程图片自动保存到服务器上
参数:
$info 需要处理的内容
$dir 图片保存的目录
$url 新图片链接地址
返回值:
Array[0] 所取得的图片 多个图片之间 *** 分隔.
Array[1] 处理后的内容
调用试例
$u_images = new u_images();
$arr_imgs = $u_images->get_img($content, 'new_images/' , 'http://www.abc.com/');
$images = $arr_imgs[0];
$content = $arr_imgs[1];
邮箱:userden@126.com
*/
class u_images
{
//保存图片
function get_img($info,$dir,$url)
{
$imgs = $this->url($info);
$index = 1;
$n_file_date = date("YmdHis");
$sav_root = str_replace("//","/",$_SERVER['DOCUMENT_ROOT'] . "/") . $dir;
for($i=0;$i<sizeof($imgs);$i++)
{
$img_post = strrpos($imgs[$i],".");
$img_ext = substr($imgs[$i],$img_post,strlen($imgs[$i]) - $img_post);
$n_file = $n_file_date . $index . $img_ext;
$file_name = $this->save_file($imgs[$i],$n_file,$sav_root);
if($file_name)
{
$index++;
$value .= $file_name . "***";//需返回的数据
$info = str_replace($imgs[$i],$url . $dir . $file_name,$info);//对内容进行处理
}
}
$image_value[0] = $value;
$image_value[1] = $info;
return $image_value;
}
//取得字等中包含的所有图片地址
function url($info)
{
$arr_imgs = array();
$i = 0;
preg_match_all("'src[\s\r\n]?=[\s\r\n]?[\\\]?[\'|\"]?(.*?\.(jpg|gif|png))[\\\]?[\'\"]?'si", $info, $arrimgs, PREG_SET_ORDER);
foreach($arrimgs AS $value)
{
$arr_imgs[$i++] = $value[1];
}
return $arr_imgs;
}
//保存文件
function save_file($img,$n_file_name,$sav_root)
{
$file = @fopen($img,"rb");
if($file)
{
if($n_file = fopen($sav_root.$n_file_name,"w"))
{
while(!feof($file))
{
$buffer = fread($file,40960);
fwrite($n_file, $buffer);
}
fclose($n_file);
fclose($file);
return $n_file_name;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
?>
[/PHP] |