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 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
PHP 基本语法格式
Dec 15 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 PHP
php微信公众号开发之现金红包
Apr 16 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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/10/09 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
幼儿园师德演讲稿
2014/05/06 职场文书
2014教师研修学习体会
2014/07/08 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
先进集体申报材料
2014/12/25 职场文书
安全保证书格式
2015/02/28 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
车辆管理制度范本
2015/08/05 职场文书
团支部书记竞选稿
2015/11/21 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang