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 相关文章推荐
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
php URL编码解码函数代码
Mar 10 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
php生成excel文件的简单方法
Feb 08 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PDO::query讲解
Jan 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
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python格式化字符串实例总结
2014/09/28 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Python读写锁实现实现代码解析
2020/11/28 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
培训讲师邀请函
2014/01/10 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
银行内勤岗位职责
2014/04/09 职场文书
端午节活动总结
2014/08/26 职场文书
留学推荐信怎么写
2015/03/26 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python