在发现了此问题,分析了下,发现其实要解决很简单,发现Dedecms在检索远程图片时的正则加了图片格式匹配;
Dedecms匹配的正则:preg_match_all("/(src)=["|'| ]{0,}(http://([^>]*).(gif|jpg|png))/isU",$body,$img_array);
而向新浪博客图片:http://static2.photo.sina.com.cn/orignal/54a625bft848ec4ffa561&690&690 是没有图片后辍的,所在不能匹配下载了!
找到了问题,就知道怎么改了!
找到Dedecms文件 /dede/inc/inc_archives_functions.PHP,找到函数
/获得文章body里的外部资源
function GetCurContent($body,&$litpic,$@R_301_6843@litpic)
//获得文章body里的外部资源
function GetCurContent($body)
大概在11行和89行把匹配远程图片的规则
preg_match_all("/(src)=["|'| ]{0,$img_array);
改成
preg_match_all("/src=["|'|s]{0,}(http://([^>]*))("|'|s)/isU",$img_array);
就OK了
当然Dedecms这样做是有它道理的,这样只能匹配图片,不会匹配到像Js,FLASH文件,但这样也有很多不方便,因为我们在编辑内容时,就能识别这是一个什么文件了!
总结以上是内存溢出为你收集整理的DedeCms 防盗链无法下载远程图片的解决方法全部内容,希望文章能够帮你解决DedeCms 防盗链无法下载远程图片的解决方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)