PHP微信开发之查询微信精选文章


Posted in PHP onJune 23, 2016

查询微信里的一些精选的,点击量比较大的文章。 
别忘记申请apikey(登录百度账号即可获取),要完成的功能是:

1、用户回复"文章",公众号要返回文章分类的编号(比如9、科技)。

2、用户回复wz9,1,腾讯     则能返回科技类文章中,关键词为“腾讯”的文章,并且显示第一页(wz9,2,腾讯则可以返回第二页,每一页返回的文章数量可以自定义,此处我放回7篇)。

详细步骤:

1、回复“文章”,返回所有文章分类的id。下面的代码是responseMsg方法里的一部分,觉得看得不明白的或者第一次接触微信开发的,可以参考我的文章:https://3water.com/article/87252.htm 

if(!empty($postStr)){
    
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"的公众号id
   $keyword = trim($postObj->Content); //用户发送的消息内容
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型:文本
   $textTpl = "<xml>
      <ToUserName><![CDATA[%s]]></ToUserName>
      <FromUserName><![CDATA[%s]]></FromUserName>
      <CreateTime>%s</CreateTime>
      <MsgType><![CDATA[%s]]></MsgType>
      <Content><![CDATA[%s]]></Content>
      </xml>";

$which = mb_substr($keyword, 0, 2, 'UTF-8'); 

elseif($which == "文章"){
    $ch = curl_init();
    $url = 'http://apis.baidu.com/showapi_open_bus/weixin/weixin_article_type';
    $header = array('apikey: 你自己的apikey');

    // 添加apikey到header
    curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 执行HTTP请求
    curl_setopt($ch , CURLOPT_URL , $url);
    $res = curl_exec($ch);
    $res = json_decode($res, true); //获取文章分类name和id

    foreach($res['showapi_res_body']['typeList'] as $v){
     $article[] = $v['id'] . "、" . $v['name'];
    }
    sort($article, SORT_NUMERIC);
    foreach($article as $v){
     $contentStr .= $v . "\n";
    }
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();


   }

 2、此时echo的$resultStr就是所有文章的分类了。用户根据分类的id,可以选择自己喜欢的分类查看文章,比如回复wz19,1,篮球可以查看分类为体育的关于篮球的文章。
 具体的调用接口和实现功能的代码如下:

elseif($which == "wz"){
    list($art_id, $page_id, $keyname) = split(',', $keyword);
    $art_id = str_replace('wz', '', $art_id);

    $ch = curl_init();
    $url = 'http://apis.baidu.com/showapi_open_bus/weixin/weixin_article_list?typeId=' . $art_id . '&page=' . $page_id . '&key=' . urlencode($keyname);

    $header = array('apikey: 你自己的apikey');

    // 添加apikey到header
    curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 执行HTTP请求
    curl_setopt($ch , CURLOPT_URL , $url);
    $res = curl_exec($ch);
    $res = json_decode($res, true);

    foreach($res['showapi_res_body']['pagebean']['contentlist'] as $k=>$v){
     if($k <= 6){
      $arts[] = $v;
     }else{
      break;
     }
    }

    $items = "";
    foreach($arts as $v){
     $items .= "<item>
    <Title><![CDATA[" . $v['title'] . "]]></Title> 
    <Description><![CDATA[" . $v['title'] . "]]></Description>
    <PicUrl><![CDATA[" . $v["contentImg"] . "]]></PicUrl>
    <Url><![CDATA[" . $v['url'] . "]]></Url>
    </item>";
    }



    $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>7</ArticleCount>
    <Articles>" . $items . "
    </Articles>
    </xml> ";

    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time);
    echo $resultStr;
    exit();


   }

别忘了$header = array('apikey: ');的时候填写自己的apikey,否则接口会拒绝返回你的请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
在线竞拍系统的PHP实现框架(一)
Oct 09 PHP
域名查询代码公布
Oct 09 PHP
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
Ajax PHP分页演示
Jan 02 PHP
dede全站URL静态化改造[070414更正]
Apr 17 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php layui实现前端多图上传实例
Jul 30 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 PHP
PHP微信开发之查询城市天气
Jun 23 #PHP
PHP微信开发之有道翻译
Jun 23 #PHP
PHP微信开发之文本自动回复
Jun 23 #PHP
php微信高级接口群发 多客服
Jun 23 #PHP
php英文单词统计器
Jun 23 #PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 #PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 #PHP
You might like
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
Angular实现表单验证功能
2017/11/13 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
简单介绍Python中的struct模块
2015/04/28 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
django 模型中的计算字段实例
2020/05/19 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
Django返回HTML文件的实现方法
2020/09/17 Python
python-地图可视化组件folium的操作
2020/12/14 Python
中专生学习生活的自我评价分享
2013/10/27 职场文书
自荐信怎么写好
2013/11/11 职场文书
美术教师自我鉴定
2014/02/12 职场文书
《乡愁》教学反思
2014/02/18 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python