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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
php目录管理函数小结
Sep 10 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
php模板函数 正则实现代码
Oct 15 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 PHP
PHP copy函数使用案例代码解析
Sep 01 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/21 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
jQuery操作input值的各种方法总结
2013/11/21 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
js中this用法实例详解
2015/05/05 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python爬取NUS-WIDE数据库图片
2016/10/05 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
毕业生自荐书
2013/12/18 职场文书
委托公证书范本
2014/04/03 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
会议简讯范文
2015/07/20 职场文书
开学典礼致辞
2015/07/29 职场文书