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

WBOY
Release: 2016-06-23 13:47:59
Original
1171 people have browsed it

本人初入微信开发不久,这几天在研究微信高级群发接口遇到了问题。
文档示例:
{
   "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了。
测试过的!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!