PHP微信开发之查询微信精选文章

 更新时间:2016年06月23日 17:19:22   作者:misaka去年夏天  
这篇文章主要为大家详细介绍了PHP微信开发之简单实现查询微信精选文章的相关资料,感兴趣的小伙伴们可以参考一下

查询微信里的一些精选的,点击量比较大的文章。 
别忘记申请apikey(登录百度账号即可获取),要完成的功能是:

1、用户回复"文章",公众号要返回文章分类的编号(比如9、科技)。

2、用户回复wz9,1,腾讯     则能返回科技类文章中,关键词为“腾讯”的文章,并且显示第一页(wz9,2,腾讯则可以返回第二页,每一页返回的文章数量可以自定义,此处我放回7篇)。

详细步骤:

1、回复“文章”,返回所有文章分类的id。下面的代码是responseMsg方法里的一部分,觉得看得不明白的或者第一次接触微信开发的,可以参考我的文章:https://www.jb51.net/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,否则接口会拒绝返回你的请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • ThinkPHP实现跨模块调用操作方法概述

    ThinkPHP实现跨模块调用操作方法概述

    使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法。这篇文章主要介绍了ThinkPHP跨模块调用操作,需要的朋友可以参考下
    2014-06-06
  • 浅析Yii2缓存的使用

    浅析Yii2缓存的使用

    一个有缓存的框架可以说是一个好的框架。下面小编通过本文给大家介绍yii2中是如何使用缓存的,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】

    Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】

    这篇文章主要介绍了Thinkphp5.0框架的Db操作,结合实例形式分析了thinkPHP5使用Db库实现数据库的连接、增删改查及链式操作等相关使用技巧,需要的朋友可以参考下
    2019-10-10
  • PHP swfupload图片上传的实例代码

    PHP swfupload图片上传的实例代码

    swfupload已经是第二次研究,这次自已整了个简单demo,有需要的朋友可以参考一下
    2013-09-09
  • Yii使用Captcha验证码的方法

    Yii使用Captcha验证码的方法

    这篇文章主要介绍了Yii使用Captcha验证码的方法,结合实例形式分析了Yii使用Captcha验证码的MVC三层具体实现技巧,需要的朋友可以参考下
    2015-12-12
  • 一个用php实现的获取URL信息的类

    一个用php实现的获取URL信息的类

    一个用php实现的获取URL信息的类...
    2007-01-01
  • php中的双引号与单引号的基本使用及区别

    php中的双引号与单引号的基本使用及区别

    字符串是一个非常要的知识,在开发中,有的使用单引号,有的使用双引号,这个是有区别的,这篇文章主要介绍了php中的双引号与单引号的基本使用,需要的朋友可以参考下
    2023-06-06
  • CodeIgniter开发实现支付宝接口调用的方法示例

    CodeIgniter开发实现支付宝接口调用的方法示例

    这篇文章主要介绍了CodeIgniter开发实现支付宝接口调用的方法,结合实例形式分析了CodeIgniter开发支付宝接口的操作步骤与相关实现技巧,需要的朋友可以参考下
    2016-11-11
  • PHP处理会话函数大总结

    PHP处理会话函数大总结

    在PHP开发中,比起Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,PHP处理会话函数包括:session_start、session_register、session_is_registered、session_unregister、Session_destroy等等,这里详细介绍下php处理会话函数
    2015-08-08
  • 新版php study根目录下文件夹无法显示的图文解决方法

    新版php study根目录下文件夹无法显示的图文解决方法

    这篇文章主要介绍了新版php study根目录下文件夹无法显示解决方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论