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和ACCESS写聊天室(五)
Oct 09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
PHP sprintf()函数用例解析
May 18 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
php如何连接sql server
Oct 16 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 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
PHP学习笔记之数组篇
2011/06/28 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
php文件上传类的分享
2017/07/06 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Python基于locals返回作用域字典
2020/10/17 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
几个Shell Script面试题
2014/04/18 面试题
生日邀请函范文
2014/01/13 职场文书
开学典礼策划方案
2014/05/28 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
行政主管岗位职责
2015/02/03 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL