PHP微信开发之查询微信精选文章
来源: 阅读:707 次 日期:2016-08-16 15:40:03
温馨提示: 小编为您整理了“PHP微信开发之查询微信精选文章”,方便广大网友查阅!

这篇文章主要为大家详细介绍了PHP微信开发之简单实现查询微信精选文章的相关资料,感兴趣的小伙伴们可以参考一下

查询微信里的一些精选的,点击量比较大的文章。 

别忘记申请apikey(登录百度账号即可获取),要完成的功能是:

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

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

详细步骤:

1、回复“文章”,返回所有文章分类的id。下面的代码是responseMsg方法里的一部分

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,否则接口会拒绝返回你的请求。

以上就是本文的全部内容,希望对大家的学习有所帮助

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map