我试过如果在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么?
想不明白。

解决方案 »

  1.   

    虽然没人回答,但我还是终于解决了。
    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了。
    测试过的!
      

  2.   

    感谢,我今天也正愁这个问题,用你的方法解决了,只是content里还是会有“ \' ”出现,再str_replace一下就好了,感谢!
      

  3.   

    我参考你的后,我也修复了这个bug.有个好东西给你分享下:微信api大全,我写的,相互交流下。http://www.thinkphp.cn/topic/26037.html
      

  4.   

    我也遇到这样的问题,但是我是用Java开发的,所以在对content的解析可能不一样,虽然我还没有搞出来,不过很谢谢楼主的提醒了。
      

  5.   

    楼主,还请教两个问题。
    第一个:就是如果html中有些标签在双引号下面包含单引号,只替换单引号是不是也会出现问题。该怎么解决?
    第二个:就是如果html中存在想图片、文件这样的路径,是不是需要绝对路径,也就是说在html中路径的前面需要加上域名吧。
      

  6.   

    楼主或者解决过这个问题的同仁能给一个最终调用接口时包含html标签的content吗,网上关于这个问题的讨论太少了
      

  7.   


    问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎
      

  8.   


    问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎
    问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎好像还是不行,比如最终发送的文本如下:
    <span style='color: #f00000'>永远的姚贝娜</span><img src='http://y2.ifengimg.com/a/2015/0116/45c44a8ec97ce86.jpg' alt='' title=''>
    是不能正常显示的,有大神知道原因吗,微信官方没有细说这个接口啊~~~
      

  9.   

    有没有.NET开发微信的,上传图文消息素材时也有这个问题,编码、解码都不行,有遇到过的吗???