您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

_关于微信接口上传图文素材时与html标签的冲突问题

2025/10/30 2:04:58发布14次查看
本人初入微信开发不久,这几天在研究微信高级群发接口遇到了问题。
文档示例:
{
   articles: [
 {
                        thumb_media_id:qi6_ze_6ptv7svjolgs-rn6ststuhijs9_didohaj0q-mwvbeloxcfziq2osiu-p,
                        author:xxx,
 title:happy day,
 content_source_url:www.qq.com,
 content:content,
 digest:digest,
                        show_cover_pic:1
 },
 {
                        thumb_media_id:qi6_ze_6ptv7svjolgs-rn6ststuhijs9_didohaj0q-mwvbeloxcfziq2osiu-p,
                        author:xxx,
 title:happy day,
 content_source_url:www.qq.com,
 content:content,
 digest:digest,
                        show_cover_pic:0
 }
   ]
}
在上传多图文素材时如果content的内容是纯文本是,可以上传成功,得到media_id,然后通过群发接口,手机可以正确获得多图文信息。
可是如果content里面的内容含有html的标签,如
,,等等时,上传后虽然也能获得media_id,群发后,手机得到的
是单图文,而且这个单图文 有图片,标题,链接,就是没有具体内容。也就是content是空的。
下面代码,$news为多图文数组,我在json_encode前进数组进行了urlencode。
foreach ($news as &$item){
foreach ($item as $k=>$v){
$item[$k]=urlencode($v);
}
}
$data=array(articles=>$news);                
$data=json_encode($data);
回复讨论(解决方案) 我试过如果在json_encode之前不对数组做urlencode的话,是能收到多图文,图文,标题,什么的也显示正常,但是图文里面的具体内容就变成了,u56fd\u4f01\u4e1a\u6240\u5f97\u7a0e\u6cd5\u5b9e\u65bd\u6761\u4f8b\u300b\u7b2c\u4e5d\u5341\u4e8c\u6761\u89c4\u5b9a\uff0c............,难道微信的服务端收到上传图文信息后,不会对其进行json_decode么?
想不明白。
在线等,请各们高手帮帮忙!
虽然没人回答,但我还是终于解决了。
content里面的内空如果含有html标签的话,需要对内容进行一下转义。如果里面含有style=..类似于这样的带号的内容的话,
就更需要注意了。
foreach ($news as &$item){
foreach ($item as $k=>$v){
if($k =='content'){
$item[$k] = urlencode(htmlspecialchars(str_replace(\,',$v)));
}else{
$item[$k] = urlencode($v);
}
}
}
就是要对html里面的“”引号先转成单引号,然后再将其转成html实体,这样在进行urlencode的时候就不会影响到标签了。
$data=array(articles=>$news);
                $data=json_encode($data);
                $end_data= urldecode($data);
                $end_data= htmlspecialchars_decode($end_data);
上传之前再对内容进行urldecode和将html实体转成html标签,这样就ok了。
测试过的!
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product