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

tilun_099 2014-10-09 02:29:18
本人初入微信开发不久,这几天在研究微信高级群发接口遇到了问题。
文档示例:
{
"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的标签,如<table>,<p>,<a>等等时,上传后虽然也能获得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);
...全文
5924 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
炎归正专 2016-09-01
  • 打赏
  • 举报
回复
楼主,按你的方法,我也是图片显示不了,另外<p><img>这 些html标签是原样输出的,有什么其他解决的方法吗?
u013822041 2016-04-30
  • 打赏
  • 举报
回复
有没有解决问题的源码分享下,我用了大家的方法做了,图文内容的图片路径都对了,可是显示的时候就没有<img>标签了,视乎被腾讯禁掉了。。。。
sinat_16203995 2016-01-12
  • 打赏
  • 举报
回复
感谢楼主 解决了问题
nurumin 2015-09-13
  • 打赏
  • 举报
回复
非常感谢楼主,我也终于解决了这个问题
mayadidi 2015-08-12
  • 打赏
  • 举报
回复
以下格式内容,我这边群发成功的,可以参考一下 { "articles": [ { "thumb_media_id": "PjSRR6xufVowoxzokR8ejBtxKrc78IFJPVtgbKASTJrsqEd8hJJ4Nb5_DQ_hsUbo", "author": "玛雅", "title": "群发图文素材1", "content_source_url": "http://www.baidu.com", "content": "<img src='http: //123.57.41.107/upload/article/8/image/20150812/20150812143421_1603.jpg' alt=''/>", "digest": "制信网SCM专区上线啦", "show_cover_pic": "0" }, { "thumb_media_id": "XNRu2fLiRfUvaZFHmZoGgfp4t_85RXBsVRCcQY3bpUcGF0RPMwmjz6k25hh76Jie", "author": "玛雅", "title": "群发图文素材2", "content_source_url": "http://www.baidu.com", "content": "<span style='font-size:24px;background-color:#FF9900;'>重大好消息</span> </p> <p> <span style='font-size:24px;background-color:#FF9900;'>制信网手机版上线啦", "digest": "制信网手机版上线啦", "show_cover_pic": "0" } ] }
慕瞻居士 2015-08-07
  • 打赏
  • 举报
回复
你好
毒药的药 2015-07-30
  • 打赏
  • 举报
回复
图文消息发出去了但是图片不显示有人来交流一下吗
chengshileitin 2015-06-29
  • 打赏
  • 举报
回复
怎么解决的?<span style='color: #f00000'>永远的姚贝娜</span><img src='http://y2.ifengimg.com/a/2015/0116/45c44a8ec97ce86.jpg' alt='' title=''>这样能正常显示吗?
序列化av 2015-04-17
  • 打赏
  • 举报
回复
谢谢楼主,同样遇到这个问题,按你的方法解决了
Zz心之所向 2015-04-15
  • 打赏
  • 举报
回复
楼主请教个问题,content里面如何显示上传过的图片???
淡如晨风 2015-03-11
  • 打赏
  • 举报
回复
有没有.NET开发微信的,上传图文消息素材时也有这个问题,编码、解码都不行,有遇到过的吗???
摇滚设计师 2015-01-20
  • 打赏
  • 举报
回复
引用 10 楼 pfx1191 的回复:
[quote=引用 9 楼 pfx1191 的回复:] 楼主或者解决过这个问题的同仁能给一个最终调用接口时包含html标签的content吗,网上关于这个问题的讨论太少了
问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎[/quote]
引用 10 楼 pfx1191 的回复:
[quote=引用 9 楼 pfx1191 的回复:] 楼主或者解决过这个问题的同仁能给一个最终调用接口时包含html标签的content吗,网上关于这个问题的讨论太少了
问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎[/quote] 好像还是不行,比如最终发送的文本如下: <span style='color: #f00000'>永远的姚贝娜</span><img src='http://y2.ifengimg.com/a/2015/0116/45c44a8ec97ce86.jpg' alt='' title=''> 是不能正常显示的,有大神知道原因吗,微信官方没有细说这个接口啊~~~
摇滚设计师 2015-01-18
  • 打赏
  • 举报
回复
楼主或者解决过这个问题的同仁能给一个最终调用接口时包含html标签的content吗,网上关于这个问题的讨论太少了
摇滚设计师 2015-01-18
  • 打赏
  • 举报
回复
引用 9 楼 pfx1191 的回复:
楼主或者解决过这个问题的同仁能给一个最终调用接口时包含html标签的content吗,网上关于这个问题的讨论太少了
问题解决了,检查了一下content,发现有不标准的html的标签(font之类的东西)导致发送的图文内容显示不正常,选用富文本编辑器还得谨慎
奥神Well 2015-01-13
  • 打赏
  • 举报
回复
楼主,还请教两个问题。 第一个:就是如果html中有些标签在双引号下面包含单引号,只替换单引号是不是也会出现问题。该怎么解决? 第二个:就是如果html中存在想图片、文件这样的路径,是不是需要绝对路径,也就是说在html中路径的前面需要加上域名吧。
奥神Well 2015-01-12
  • 打赏
  • 举报
回复
我也遇到这样的问题,但是我是用Java开发的,所以在对content的解析可能不一样,虽然我还没有搞出来,不过很谢谢楼主的提醒了。
a13455641146 2015-01-06
  • 打赏
  • 举报
回复
楼主,真心谢谢你,我被这个问题困扰好多天了,直到看到你的帖子才解决好,帮了我的大忙!
逝仙313 2014-11-25
  • 打赏
  • 举报
回复
我参考你的后,我也修复了这个bug.有个好东西给你分享下:微信api大全,我写的,相互交流下。http://www.thinkphp.cn/topic/26037.html
u010259307 2014-10-13
  • 打赏
  • 举报
回复
感谢,我今天也正愁这个问题,用你的方法解决了,只是content里还是会有“ \' ”出现,再str_replace一下就好了,感谢!
tilun_099 2014-10-10
  • 打赏
  • 举报
回复
虽然没人回答,但我还是终于解决了。 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)

20,397

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧