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后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
浅谈discuz密码加密的方式
May 22 PHP
PHP中的use关键字概述
Jul 23 PHP
php简单smarty入门程序实例
Jun 11 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
Symfony2在Nginx下的配置方法图文教程
Feb 04 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
PHP addslashes()函数讲解
Feb 03 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开发中的安全防范知识详解
2013/06/06 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
PHP中比较时间大小实例
2014/08/21 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
python合并文本文件示例
2014/02/07 Python
python实现kmp算法的实例代码
2019/04/03 Python
python 实现目录复制的三种小结
2019/12/04 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python