公众号文章粘贴图片转换的实现办法【附代码】


由于微信公众号的图片都做防盗链,所以直接引用是无法显示的,只有把图片下载到本地服务器才能真正用上了。


主要实现逻辑:

1、复制公众号文章的内容到编辑器;

2、提交编辑器内容时候,对内容中的图片链接进行处理;(正则式匹配,目前常用到的有几个格式链接:jpg/gif/png/svg)

3、把匹配的链接逐一进行两个处理:下载保存、本地路径替换原网址;

4、处理后的内容保存数据表。


参考代码:

1、内容中匹配图片的代码

/***
 * @name 保存公众号文章中图片到本地并替换路径
 * @param string $content 公众号文章html
 * @return string 替换图片路径后的html
 */
function localWechatContent($content){
    $regx = '"https://mmbiz.qpic.cn/mmbiz_\S*(wx_co=1|wx_lazy=1)"';
    preg_match_all($regx,$content,$result);
    if(!empty($result)){
        foreach($result[0] as $v){
            $v = str_replace('"','',$v);
            $content = str_replace($v,"/".saveWechatPics($v),$content);
        }
    }
    return $content;
}


2、图片下载转存的代码(本地文件名用MD5网址的值,能避免重复下载占用空间)

/***
 * @name 保存公众号图片到本地
 * @param string $url 图片网址
 * @return string 本地图片文件路径
 */
function saveWechatPics($url){
    $pic = file_get_contents($url);
    preg_match_all("(mmbiz_jpg|mmbiz_png|mmbiz_gif|mmbiz_svg)",$url,$result);
    $ftype = str_replace("mmbiz_","",$result[0][0]);
    $fpath = "upload/wechat/".md5($url).".".$ftype;
    file_put_contents($fpath,$pic);
    return $fpath;
}


3、保存编辑器的代码,就是在提交前处理先。

if(!empty($data["post"]["post_content"])){
   $data["post"]["post_content"] = localWechatContent($data["post"]["post_content"]);//公众号文章图片本地化
}


代码未经优化,就是粗暴能用,作为后台用途也是无所谓了。


评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发表话题

源素材推荐

提问必知

0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复

积分规则

1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号


ThinkCMF 8.0.0发布啦!祝大家节日快乐! 立即体验!