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模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
PHP 写文本日志实现代码
May 18 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
Smarty保留变量用法分析
May 23 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 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 Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
详解Python中dict与set的使用
2015/08/10 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
通过Pandas读取大文件的实例
2018/06/07 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
将python安装信息加入注册表的示例
2019/11/20 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Python如何获取文件路径/目录
2020/09/22 Python
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
技校生自我鉴定范文
2013/09/26 职场文书
置业顾问岗位职责
2014/03/02 职场文书
企业金融服务方案
2014/06/03 职场文书
孔庙导游词
2015/02/04 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
外科护士长工作总结
2015/08/12 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android