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
php mssql 时间格式问题
Jan 13 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
PHP进程同步代码实例
Feb 12 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP中header用法小结
May 23 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 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
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
js实现消息滚动效果
2017/01/18 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
pandas中去除指定字符的实例
2018/05/18 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
基于python代码批量处理图片resize
2020/06/04 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
十月份红领巾广播稿
2014/01/22 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
大学毕业感言200字
2014/03/09 职场文书
2014年团队工作总结
2014/11/24 职场文书
安徽导游词
2015/02/12 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers