远程保存图片的一个bug 新闻数据,带图片,勾选中 远程保存图片 如果图片格式是以下这种形式的,则远程保存失败 http://pic.baidu.com/album/user/547/22/RE1SQBgHYw/index/670 解决办法 7.0替换一个位置: e/class/functions.php中 修改e/class/functions.php大概第1455行和1456行 $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is"; $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text); 改为 $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)([^'|\"|\\\\\"|]*)('|\"|\\\\\"|)(.*?)>/is"; $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5".$exp2."\\6\\7>",$text); 修改e/class/connect.php大概2862行 $r[filetype]=GetFiletype($url); 后面再加一行 if ((strlen($r[filetype]) !==4 ) OR (strlen($r[filetype]) !==5 )) $r[filetype]=".jpg"; 修改完后不影响原来正常的使用,也就是普通形式的图片,和不带扩展名形式的图片都能够正确的远程保存下来 ----------------------------------------------------------------------------- 7.2替换2个位置: 替换位置1: e/class/functions.php中 //替换图片标签 function RepImg($text,$copyflash){ global $ecms_config; $exp1=""; $exp2=""; //去掉图片链接 if($ecms_config['sets']['saveurlimgclearurl']==1) { $zz2="/\<(a|A) (.*?)(href|Href)=('|\"|\\\\\"|)(.+?)><(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)><\/(a|A)>/is"; $text=preg_replace($zz2,"<\\6 \\7\\8=\\9\\10\\11\\12>",$text); } $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is"; $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text); return $text; } 替换位置2: 修改e/class/connect.php大概3119行, //远程保存 function DoTranUrl($url,$classid){ global $public_r,$class_r,$ecms_config,$efileftp_fr; $classid=(int)$classid; //处理地址 $url=trim($url); $url=str_replace(" ","%20",$url); $r[tran]=1; //附件地址 $r[url]=$url; //文件类型 $r[filetype]=GetFiletype($url); if(CheckSaveTranFiletype($r[filetype])) { $r[tran]=0; return $r; } //是否已上传的文件 $havetr=CheckNotSaveUrl($url); if($havetr) { $r[tran]=0; return $r; } //是否地址