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

//替换好符合微信图文消息的内容
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'];
}

posted @ 2018-02-26 17:28  聂蓝  阅读(414)  评论(0编辑  收藏  举报