//替换好符合微信图文消息的内容
foreach($content_data as $key => $val){
$content[$key] = $this->get_img_weixin_url($val->content,$token);
}

/**
* @name 将文章地所有img链接替换为微信图片链接,调用接口
* @author chixin<[email 1748890093@qq.com]>
* @date(2018-2-26)
* @param $content [内容]
* @param $token [微信token]
* @return [返回替换好图片地内容信息]
*/
private function get_img_weixin_url($content="",$token){
$img = $this->content_img_array($content,$token);
$pregRule = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
foreach($img as $key => $val){
$content = preg_replace($pregRule,$val,$content,1);
}
return $content;
}

/**
* @name 筛选文章内所有图片,取出组成数组
* @author chixin<[email 1748890093@qq.com]>
* @date(2018-2-26)
* @param $content [内容]
* @param $token [微信token]
* @return [返回图片数组信息]
*/
private function content_img_array($content="",$token){
preg_match_all('/<img.*\/>/iUs', $content, $out);
$img = $this->content_img_weixinurl($out[0],$token);
return $img;
}

/**
* @name 将网上图片保存到本地,并且上传到微信上换取url
* @author chixin<[email 1748890093@qq.com]>
* @date(2018-2-26)
* @param $img [图片]
* @param $token [微信token]
* @return [微信图片url]
*/
private function content_img_weixinurl($img="",$token){
foreach($img as $key => $imgTag){
//检测图片是jpg格式还是png格式
if(strpos($imgTag,".jpg")){
//jpg则返回jpg链接
$hou = '.jpg';
}elseif(strpos($imgTag,".png")){
//png则返回png链接
$hou = '.png';
}elseif(strpos($imgTag,".jpeg")){
//jpeg则返回png链接
$hou = '.jpeg';
}elseif(strpos($imgTag,".gif")){
//gif则返回png链接
$hou = '.gif';
}elseif(strpos($imgTag,".bmp")){
//bmp则返回png链接
$hou = '.bmp';
}
preg_match("/ src=([\"'])([^\\1]*)\\1/", $imgTag, $result);
$img_urls = strstr($result[2],$hou,true).$hou;
$shuzi = $this->generate_code(8); //获取随机数
$file = "/img/images/".$shuzi.".jpg";
$client = new Client(['verify' => false]); //忽略SSL错误
$response = $client->get($img_urls, ['save_to' => public_path($file)]); //保存远程url到文件
$img_url = config('cx.url').$shuzi.".jpg"; //从config文件获取地址
//上传图片获取微信图片链接,发布文章地时候插入到文章当中
$img_url_arr[$key] = $this->post_find_data("https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$token."&type=image",$img_url);
}
return $img_url_arr;
}

/**
* 获得随机数
*/
private function generate_code($length) {
$min = pow(10 , ($length - 1));
$max = pow(10, $length) - 1;
return rand($min, $max);
}

/**
* 上传文件curl
*/
private function post_find_data($url,$fileurl){
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
$data = array('media' => new \CURLFile($fileurl));
curl_setopt($ch , CURLOPT_POSTFIELDS,$data);
$output = curl_exec($ch);
curl_close($ch);
$url = json_decode($output,true);
return $url['url'];
}

转载于:https://www.cnblogs.com/nielan/p/8474324.html

将普通文章内容替换为微信图文消息符合的内容相关推荐

  1. 群发微信图文消息,但是正文中的图片却不显示

    问题描述: 在做微信群发图文消息的时候,遇到了图文消息中正文部分的图片,在发送到公众号之后不显示. 仔细查看公众号开发文档后发现了这样一句话: 请注意,在图文消息的具体内容中,将过滤外部的图片链接,开 ...

  2. 微信图文消息中如何使用svg图片

    微信图文消息无法上传svg格式图片,但是可以通过浏览器开发者工具进行hack 将svg图片使用文本编辑器打开,复制内容 登录微信公众平台,新建图文消息 输入正文的输入框中输入随意文字 打开浏览器控制台 ...

  3. 开发群发微信图文消息,正文中的图片却不显示问题

    https://blog.csdn.net/skydar/article/details/50984089 请参考原文,具体问题具体分析~

  4. 微信公众号开发--群发图文消息,消息体包含图片地址

    今天实现了一下微信公众号的消息群发功能,整个过程还是比较麻烦的,而且有些坑.记录一下. 微信官方文档–高级群发接口 在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的 ...

  5. 微信公众号开发 [03] 结合UEditor实现图文消息群发功能

    0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...

  6. 如何实现复制微信图文到Word文档

    防火防盗防抄袭,还是微信对内容保护地好.说到微信,你肯定不知道,如果没有google的原创技术,就没有现在的公众平台了. 新型图片格式Webp 2010年,在当时JPEG.PNG 和GIF等图片格式的 ...

  7. java上传图文消息_微信公众号开发之上传图文消息素材(十二)

    群发消息太重要了,公众号管理员需要定期通过公众号群发一些消息,用户通过推送的消息可以定期了解公众号的最新信息. 群发图文消息的过程如下: 首先,预先将图文消息中需要用到的图片,使用上传图文消息内图片接 ...

  8. Java--对接微信第三篇之订阅发送图文消息给用户

    在第二篇的基础上,把订阅响应事件下的,发送文本消息接口替换成发送图文消息的接口. // 创建图文消息NewsMessage newsMessage = new NewsMessage();newsMe ...

  9. 微信群发图文消息invalid media_id hint,thumb_media_id怎么获取

    微信群发图文消息thumb_media_id, thumb_media_id怎么获取, 微信群发图文消息invalid media_id hint, 微信群发图文消息40007, 40007,inva ...

最新文章

  1. Cpp 对象模型探索 / placement new 实现原理
  2. 如何调试bash脚本
  3. 快嘉开发框架1.0和示例介绍及使用说明
  4. PgSQL · 案例分享 · PostgreSQL+HybridDB解决企业TP+AP混合需求
  5. 盘州市“检企联合” 探索大数据应用新路
  6. uni-app中使用腾讯位置服务实现小程序地图选点功能
  7. python copy与deepcopy (拷贝与深拷贝)
  8. [windows]JDK安装与环境变量配置
  9. vs2010 破解版,试用版变正式版
  10. MC9S12相关模块
  11. 安装一个apk引起的无法开机。
  12. 计算机与医药信息学,浙江大学药物信息学研究所
  13. pc wap模板 html,快速创建一个pc或者wap站点模板
  14. day18-java
  15. 2020年你最需要掌握的11种编程语言
  16. 亚马逊美国站儿童玩具车、毛绒玩具办理CPC认证 ASTMF963标准
  17. 负数在计算机中的表示+有符号无符号的区别+负数按位运算
  18. 解决M4以上版本每次重启生成 SpringAutoDeployment 记录的问题
  19. 软件:在Dos模拟器中安装TurboC++ 3.0
  20. 轮廓匹配---学习笔记

热门文章

  1. 用在WEB开发中实现会话跟踪实现
  2. pip换源,解决pip下载超时,连接失败等问题
  3. 没有找到站点_为了在家Coding,我搜集了海量的远程站点,然而...
  4. GridView xml中设置android:focusable=false无效的原因
  5. 订阅发布系统得解耦与冗余
  6. ffmpeg 2.6.3在Windows系统MinGW的编译
  7. GBK转unicode码查询表的改进
  8. Linux下挂载NTFS格式文件系统
  9. 5u以太网用交换机连接电脑_干货丨如何用自己的电脑直接连接NUS打印机
  10. 【Clickhouse】Clickhouse 普通视图