关键词搜索

全站搜索
×
密码登录在这里
×
注册会员
×

已有账号? 请点击

忘记密码

已有账号? 请点击

使用其他方式登录

PHP微信公众文章图片自动本地化

发布2022-02-13 浏览1073次

详情内容

在做ueditor百度编辑器复制粘贴文章时,包括网页文章含图片,以及P微信公众文章图片时不能自动本地化,原来是微信公众号的图片地址没有后缀


微信公众号图片地址有防盗下载,

如:有PNG或jpg

https://mmbiz.qpic.cn/mmbiz_png/zOnV3yQxrautMWFVnqM39Roxo6Kw4wCEWoRelVw3e0cdg8Oph4y34pmOibTHiaheiaD8mUsPOZerpc7OVS7aNqcPQ/0?wx_fmt=png
https://mmbiz.qpic.cn/mmbiz_jpg/vu4IdQ8iaORjdfOibL3g10iapWgqxGG1j8I23ocVOY5CacA02ZWJkkHGJ6JV8E1h178edW8d3VRgCplA0amgoJ3Mw/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

所以思路就是,把公众号图片网址https选替换成http, 原因是https有防盗无法下载。

然后,用curl下载图片,保存时注意看mmbiz_jpg或mmbiz_png自己补充后缀,本地化后,为了让百度ueditor编辑器能自动替换,需求把图片网址还原成https,且htmlspecialchars_decode解码下,thinkphp把url被encode过了。


image.png

image.png


源码:

//微信公众号图片本地化ayumi
if(strpos($imgUrl,'mmbiz.qpic.cn')!=false)
{
    $imgUrl = str_replace('https','http',$imgUrl);//https替换成http,否则防盗链无法通过

    $savePath = $config['savePath'];
    $referer_url = 'https://mp.weixin.qq.com';

    //创建保存位置
    if (!file_exists($savePath)) {
        mkdir("$savePath", 0777, true);
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $imgUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    if(!empty($referer_url))
    {
        curl_setopt ($ch, CURLOPT_REFERER, $referer_url);   //构造来路
    }
    if(!empty($ip))
    {
        $headers['CLIENT-IP'] = $ip;
        $headers['X-FORWARDED-FOR'] = $ip;
        $headerArr = array();
        foreach( $headers as $n => $v ) {
            $headerArr[] = $n .':' . $v;
        }
        curl_setopt ($ch, CURLOPT_HTTPHEADER, $headerArr); //构造IP
    }
    if(!empty($user_agent))
    {
        $user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36";
        curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent); //构造用户端代理
    }
    //$status = curl_getinfo($ch,CURLINFO_HTTP_CODE); //获取url响应

    $file = curl_exec($ch);
    curl_close($ch);

    //不存在
    if (preg_match("/404/", $file)){
        return false;
    }

    $get_img = getimagesize($imgUrl);
    $suffix =  '.jpg';
    if(strpos($imgUrl,'mmbiz_png')!=false)
    {
        $suffix =  '.png';
    }

    $filename = uniqid().rand(100,999).'_'.$get_img[0].'x'.$get_img[1].$suffix;

    $resource = fopen($savePath . $filename, 'a');
    fwrite($resource, $file);
    fclose($resource);

    $file = "/upload/ueditor/" . $date . "/" . $filename;

    $imgUrl = str_replace('http://','https://',$imgUrl);//替换回原来https,保证图片地址和原来一样,ueditor编辑器能自动替换src
    $return_img['source'] = htmlspecialchars_decode($imgUrl);//替换回原来https,保证图片地址和原来一样,ueditor编辑器能自动替换src
    $return_img['state'] = 'SUCCESS';
    $return_img['url']   = $file;
    array_push($list, $return_img);
    continue;
}


点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
确定支付下载