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+dbfile开发小型留言本
Oct 09 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
PHP借助phpmailer发送邮件
May 11 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
一个好用的分页函数
2006/11/16 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Java及python正则表达式详解
2017/12/27 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
Python用for循环实现九九乘法表
2018/05/31 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
自荐信结尾
2013/10/27 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
舞出我人生观后感
2015/06/16 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python