fckeditor 如何远程保存图片 我用的是FckEditor 编辑器,可以支持直接从别人网页上,复制粘贴,不过图片却是别人的地址,我想问的是,如何能远程保存图片呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找到图片的地址,如<img src="地址" >把src="XXX"改成src="http://XX 从网络可以访问的地址" 找到图片的地址,如 <img src="地址" > 把src="XXX"改成src="http://XX 从网络可以访问的地址" 我不明白啊,我是菜鸟,大虾说清楚点可以么? 图片地址是从HTML指定的,打开HTML源文件,修改地址 保存的时候分析提交的内容 如有图片<img src="http://xx.xx.com/xx/xx.jpg">远程访问将该图片并将它保存到本地再将“<img src="http://xx.xx.com/xx/xx.jpg">”改成你本地图片的地址貌似比较麻烦 将远程图片保存到本地的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("http://news.bbc.co.uk/images/_1978837_detector_ap100.jpg",""); if($img):echo "<pre><img src="".$img.""></pre>";else:echo "false";endif; ?> ///远程保存图片 网页中复制过来的,还没有修改 2008-11-18 function SaveHttpFiles($content) { $content =str_replace('\"','',$content); $content =str_replace('\\','',$content); preg_match_all ("/<img.+src=('|\"|)?(.*)(\1)([s].*)?>/", $content, $matches); //print_r($matches); return $matches[2]; $img_array = array_unique($matches[2]); set_time_limit(0); foreach ($img_array as $key => $value) { $get_file = @file_get_contents($value); $filetime = time(); $filepath = "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/"; mkDirE($filepath,777); $filename = date("YmdHis",$filetime).rand(1,5).'.'.substr($value,-3,3); $fp = @fopen("$filepath$filename","w"); @fwrite($fp,$get_file); fclose($fp); $content = preg_replace("/".addcslashes($value,"/")."/isU", "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/".$filename, $content); //echo $_POST["content"]; } return $content; } //自动生成目录 function mkDirE($dir,$dirmode=777) { if (!empty($dir)) { if (!file_exists($dir)) { preg_match_all('/([^/]*)/?/i', $dir,$atmp); $base=""; foreach ($atmp[0] as $key=>$val) { $base=$base.$val; if(!file_exists($base)) if (!mkdir($base,$dirmode)) { echo "Error: Cannot create ".$base; return -1; } } } else if (!is_dir($dir)) { echo "Error: ".$dir." exists and is not a directory"; return -2; } } return 0; } 哪位牛人帮我这个改改..... //远程保存图片 //$content 一般是从编辑器里得到的数据 //fasfdsafa<img border='0' src='fasfdsa.jpg'>fafasfafa<img src='http://www.163.com/ddd.jpg' border='0'>fdsafa function GetPic($content) { //$content = "<center><img alt='' border='' src='http://img1.cache.netease.com/catchpic/5/59/59C7363EC8BE50DB4D6DEA15037C111D.jpg' /></center>"; $content = str_replace('\"','"',$content); //获得编辑器里图片的个数 $picsuma = explode('<img',$content); $picsum = count($picsuma);//图片的个数就是$picsum-1 for($i=1;$i<$picsum;$i++) { //查找SRC的位置 $myfile = strpos($picsuma[$i],'src='); //查找地址结束位置 $pictype =""; if(strpos($picsuma[$i],'.jpg')>0) { $picend = strpos($picsuma[$i],'.jpg'); $pictype = ".jpg"; } else if(strpos($picsuma[$i],'.bmp')>0) { $picend = strpos($picsuma[$i],'.bmp'); $pictype = ".bmp"; } else if(strpos($picsuma[$i],'.png')>0) { $picend = strpos($picsuma[$i],'.png'); $pictype = ".png"; } else if(strpos($picsuma[$i],'.gif')>0) { $picend = strpos($picsuma[$i],'.gif'); $pictype = ".gif"; } //return $myfile; $piclen = $picend - $myfile; //取得地址 $path = substr($picsuma[$i],$myfile,$piclen).$pictype;//src='fasfdsa1.jpg $upath = explode("=",$path); $realpath = substr($upath[1],0,1) == "'"? substr($upath[1],1) : $upath[1]; $realpath = substr($realpath,0,1) == '"'? substr($realpath,1) : $realpath; //return $realpath; //根据地址判断是远程还是本地 是http://开头就是远程 if(substr(trim($realpath),0,4) == "http") //远程 { $newfilepath = GrabImage($realpath); //新地址改为跟目录,绝对地址 if(substr($newfilepath,0,2) == "..") { $newfilepath = substr($newfilepath,2); } $content = str_replace($realpath,$newfilepath,$content); } } //去掉所有的连接 //<a href='' tarlll>dfa</a>dfasfdaf<a href=''>dsfsa</a>fdafas $content = replace_not_appoint_url($content); return ($content); }///给定地址,远程保存图片//$url 是给定的图片地址 如http://www.welrwl.gaom/fsdfs/sgsa/11.jpg//$filename 默认是空,怎创建的图片目录为userfiles/年月/dfdsa.jpg,不为空则为指定名命名 function GrabImage($url,$filename="") { if($url==""):return false;endif; if($filename=="") { $ext=strrchr($url,"."); if($ext!=".gif" && $ext!=".jpg" && $ext!=".bmp" && $ext!=".png"):return false;endif; //$filename=date("dMYHis").$ext; $filename = randoma().$ext; } $filename1 = "../UserFiles/".date('Ym')."/".$filename; $filename2 = "../UserFiles/".date('Ym')."/"; mkdir($filename2,0777); ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); $fp2=@fopen($filename1, "a"); fwrite($fp2,$img); fclose($fp2); return $filename1; } /*** 替换非指定的链接** @param string $str // 要过滤的文本* @param string $top_level_domain // 一级域名,但不包含www 如http://www.google.com 输入google.com* @return string $str*/ function replace_not_appoint_url($text, $top_level_domain ='ceiea.com') { $top_level_domain_regex = str_replace('.', '\.', $top_level_domain); //$parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?google\.com\/?(.*?)("|\')?(.*?)>(.+?)<\/a>/i'; $parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?'.$top_level_domain_regex.'\/?(.*?)("|\')?(.*?)>(.*?)<\/a>/i'; //$parten2 = '<a\\1#Mref#="http://\\3.google.com/\\4"\\5>\\6</a>'; $parten2 = '<a\\1#Mref#=\\2http://\\3.'.$top_level_domain.'/\\4\\5\\6>\\7</a>'; $parten3= '/<a.*?href.*?>(.*?)<\/a>/i'; $text = preg_replace($parten1, $parten2, $text); $text = preg_replace($parten3, '\\1', $text); $text = str_replace('#Mref#', 'href', $text); $text = str_replace('http://.', 'http://', $text); return $text; }有时候能保存,有时候保存不了,不知道为什么????谁能帮我解答下? 这里有下载:http://www.cn09.com/remository.html?func=fileinfo&id=1 急切的招人解决问题 php 从客户端传送大文件到服务器 求助php中 循环读取HTML文件,并且可以把html文件内容列出来的代码?急? 求一段正则提取代码 求几个正则 烦死了,我数据库是utf-8, 页面是gb2312,mysql_query("set names gb2312;"); 旅游论坛 一个从MYSQL取数据,在前台显示的问题 PHP威盾的2个文件无法进行正常的解密,求大牛帮助 求教高手怎么用花生壳2.0+wordpress搭建个人网站?急~~~在线 discuz中页面跳转的问题 大家好,我的网站php+mysql 修改些内容,可以报个价格。
打开HTML源文件,修改地址
远程访问将该图片并将它保存到本地再将“<img src="http://xx.xx.com/xx/xx.jpg">”改成你本地图片的地址
貌似比较麻烦
<?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("http://news.bbc.co.uk/images/_1978837_detector_ap100.jpg","");
if($img):echo "<pre><img src="".$img.""></pre>";
else:echo "false";
endif;
?>
function SaveHttpFiles($content)
{
$content =str_replace('\"','',$content);
$content =str_replace('\\','',$content);
preg_match_all ("/<img.+src=('|\"|)?(.*)(\1)([s].*)?>/", $content, $matches);
//print_r($matches);
return $matches[2]; $img_array = array_unique($matches[2]);
set_time_limit(0);
foreach ($img_array as $key => $value)
{
$get_file = @file_get_contents($value);
$filetime = time();
$filepath = "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/";
mkDirE($filepath,777);
$filename = date("YmdHis",$filetime).rand(1,5).'.'.substr($value,-3,3);
$fp = @fopen("$filepath$filename","w");
@fwrite($fp,$get_file);
fclose($fp);
$content = preg_replace("/".addcslashes($value,"/")."/isU", "./pic/".date("Y",$filetime)."/".date("m",$filetime)."/".$filename, $content);
//echo $_POST["content"];
}
return $content;
}
//自动生成目录
function mkDirE($dir,$dirmode=777)
{
if (!empty($dir))
{
if (!file_exists($dir))
{
preg_match_all('/([^/]*)/?/i', $dir,$atmp);
$base="";
foreach ($atmp[0] as $key=>$val)
{
$base=$base.$val;
if(!file_exists($base))
if (!mkdir($base,$dirmode))
{
echo "Error: Cannot create ".$base;
return -1;
}
}
}
else
if (!is_dir($dir))
{
echo "Error: ".$dir." exists and is not a directory";
return -2;
}
} return 0; } 哪位牛人帮我这个改改.....
//$content 一般是从编辑器里得到的数据
//fasfdsafa<img border='0' src='fasfdsa.jpg'>fafasfafa<img src='http://www.163.com/ddd.jpg' border='0'>fdsafa
function GetPic($content)
{
//$content = "<center><img alt='' border='' src='http://img1.cache.netease.com/catchpic/5/59/59C7363EC8BE50DB4D6DEA15037C111D.jpg' /></center>";
$content = str_replace('\"','"',$content);
//获得编辑器里图片的个数
$picsuma = explode('<img',$content);
$picsum = count($picsuma);//图片的个数就是$picsum-1
for($i=1;$i<$picsum;$i++)
{
//查找SRC的位置
$myfile = strpos($picsuma[$i],'src=');
//查找地址结束位置
$pictype ="";
if(strpos($picsuma[$i],'.jpg')>0)
{
$picend = strpos($picsuma[$i],'.jpg');
$pictype = ".jpg";
}
else if(strpos($picsuma[$i],'.bmp')>0)
{
$picend = strpos($picsuma[$i],'.bmp');
$pictype = ".bmp";
}
else if(strpos($picsuma[$i],'.png')>0)
{
$picend = strpos($picsuma[$i],'.png');
$pictype = ".png";
}
else if(strpos($picsuma[$i],'.gif')>0)
{
$picend = strpos($picsuma[$i],'.gif');
$pictype = ".gif";
}
//return $myfile;
$piclen = $picend - $myfile;
//取得地址
$path = substr($picsuma[$i],$myfile,$piclen).$pictype;//src='fasfdsa1.jpg
$upath = explode("=",$path);
$realpath = substr($upath[1],0,1) == "'"? substr($upath[1],1) : $upath[1];
$realpath = substr($realpath,0,1) == '"'? substr($realpath,1) : $realpath;
//return $realpath;
//根据地址判断是远程还是本地 是http://开头就是远程
if(substr(trim($realpath),0,4) == "http") //远程
{
$newfilepath = GrabImage($realpath);
//新地址改为跟目录,绝对地址
if(substr($newfilepath,0,2) == "..")
{
$newfilepath = substr($newfilepath,2);
}
$content = str_replace($realpath,$newfilepath,$content);
} } //去掉所有的连接
//<a href='' tarlll>dfa</a>dfasfdaf<a href=''>dsfsa</a>fdafas
$content = replace_not_appoint_url($content);
return ($content);
}
///给定地址,远程保存图片
//$url 是给定的图片地址 如http://www.welrwl.gaom/fsdfs/sgsa/11.jpg
//$filename 默认是空,怎创建的图片目录为userfiles/年月/dfdsa.jpg,不为空则为指定名命名
function GrabImage($url,$filename="")
{
if($url==""):return false;endif; if($filename=="")
{
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg" && $ext!=".bmp" && $ext!=".png"):return false;endif;
//$filename=date("dMYHis").$ext;
$filename = randoma().$ext;
}
$filename1 = "../UserFiles/".date('Ym')."/".$filename;
$filename2 = "../UserFiles/".date('Ym')."/";
mkdir($filename2,0777);
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img); $fp2=@fopen($filename1, "a");
fwrite($fp2,$img);
fclose($fp2); return $filename1;
}
/**
* 替换非指定的链接
*
* @param string $str // 要过滤的文本
* @param string $top_level_domain // 一级域名,但不包含www 如http://www.google.com 输入google.com
* @return string $str
*/ function replace_not_appoint_url($text, $top_level_domain ='ceiea.com')
{
$top_level_domain_regex = str_replace('.', '\.', $top_level_domain);
//$parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?google\.com\/?(.*?)("|\')?(.*?)>(.+?)<\/a>/i';
$parten1 = '/<a(.*?)href=("|\')?http:\/\/(.*?)\.?'.$top_level_domain_regex.'\/?(.*?)("|\')?(.*?)>(.*?)<\/a>/i';
//$parten2 = '<a\\1#Mref#="http://\\3.google.com/\\4"\\5>\\6</a>';
$parten2 = '<a\\1#Mref#=\\2http://\\3.'.$top_level_domain.'/\\4\\5\\6>\\7</a>';
$parten3= '/<a.*?href.*?>(.*?)<\/a>/i';
$text = preg_replace($parten1, $parten2, $text);
$text = preg_replace($parten3, '\\1', $text);
$text = str_replace('#Mref#', 'href', $text);
$text = str_replace('http://.', 'http://', $text);
return $text;
}
有时候能保存,有时候保存不了,不知道为什么????
谁能帮我解答下?