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超级全局变量
Jan 26 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
php页面防重复提交方法总结
Nov 25 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
php生成与读取excel文件
Oct 14 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
JS 控件事件小结
2012/10/31 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
python 实现插入排序算法
2012/06/05 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python celery原理及运行流程解析
2020/06/13 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
赞美老师的演讲稿
2014/05/22 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL