帝国CMS7.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);
然后在修改 e/class/connect.php 的大概2862行
- $zz1="/<(img|IMG) (.*?)(src|SRC)=('|"|\\"|)([^'|"|\\"|]*)('|"|\\"|)(.*?)>/is";
- $text=preg_replace($zz1,"<\1 \2\3=\4".$exp1."\5".$exp2."\6\7>",$text);
在这句话的后面加入如下代码:
- $r[filetype]=GetFiletype($url);
修改完后不影响原来正常的使用,也就是普通形式的图片,和不带扩展名形式的图片都能够正确的远程保存下来。 帝国CMS7.2和7.5需要替换e/class/functions.php中的两个位置,
- if ((strlen($r[filetype]) !==4 ) OR (strlen($r[filetype]) !==5 )) $r[filetype]=".jpg";
第一个位置:
第二个位置:
- //替换图片标签 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; }
- 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;
- }
- //是否地址