微信公众平台-股票行情查询

来源:互联网 发布:数据分析师有关证书 编辑:程序博客网 时间:2024/04/28 07:30

微信公众平台-股票行情查询

php实现的获取上证,深证 A,B股实时行情的接口,只实现了文本消息回复,K线图可以在图文消息中加上接口url地址就可以显示,具体的接口地址网上可以找,有了股票数据源,弄成图文消息也是轻而易举了。

用到php扩展curl库发送http请求到新浪接口,

下面是sendHttp.php源码


<?php     class RespMsg {         public function weatherInfo() {                    }                    public function stockInfo($stockCode) {             $ch = curl_init();                            $header=array();             $header[]="Content-Type: text/plain; charset=UTF-8";             //$header[]="Host: 192.168.242.128";             $header[]="Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";             $header[]="Connection: keep-alive";             //$header[]="Content-Length: ".strlen($menuJson);                                           if(empty($stockCode))                 $stockCode="000001";             if(strncmp($stockCode,"00",2)==0 || strncmp($stockCode,"200",3)==0 || strncmp($stockCode,"300",3)==0 || strncmp($stockCode,"399",3)==0) {                 $url = "http://hq.sinajs.cn/list=sz".$stockCode;             } else if(strncmp($stockCode,"60",2)==0 || strncmp($stockCode,"900",3)==0) {                 $url = "http://hq.sinajs.cn/list=sh".$stockCode;             }                            if(strcmp($stockCode,"000001")==0) {                 $url = "http://hq.sinajs.cn/list=sh".$stockCode.",sz".$stockCode;              }                            curl_setopt($ch, CURLOPT_URL, $url);             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);             curl_setopt($ch, CURLOPT_POST, 1);             //curl_setopt($ch, CURLOPT_POSTFIELDS, $menuJson);             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);             curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;             curl_setopt($ch, CURLOPT_HEADER, false);             $res = curl_exec($ch);             if(curl_errno($ch)) {                 print curl_error($ch);                 $res="0";             } else {                 curl_close($ch);             }              //@header('Content-Type:text/plain; charset=utf-8');             //解决中文乱码             $res=mb_convert_encoding($res,"UTF-8","EUC-CN");             return $res;         }                    public function newsInfo() {                    }                           } ?>

//解析新浪接口返回的函数

    

    require("sendHttp.php");

......


private function parserStock($str) {                $arraykey=array("股票名字",                 "今日开盘价",                 "昨日收盘价",                 "当前价格",                 "今日最高价",                 "今日最低价",                 "竞买价",                 "竞卖价",                 "成交数(手)",                 "成交金额(万)",                 "买一(股)",                 "买一(元)",                 "买二(股)",                 "买二(元)",                 "买三(股)",                 "买三(元)",                 "买四(股)",                 "买四(元)",                 "买五(股)",                 "买五(元)",                 "卖一(股)",                 "卖一(元)",                 "卖二(股)",                 "卖二(元)",                 "卖三(股)",                 "卖三(元)",                 "卖四(股)",                 "卖四(元)",                 "卖五(股)",                 "卖五(元)",                 "日期",                 "时间");                        if($str=="0")         return $result;                for($i=0,$pos2=0;$i<strlen($str);$i=$i+$pos2) {         if(!($pos1=stripos($str,"=",$pos2))) {             break;         }         if(!($pos2=stripos($str,';',$pos1)))             break;                    $tmp=substr($str,$pos1+2,$pos2-$pos1-3);                    if(strlen($tmp)==0)             return $result;                        $arraydata=explode(",",$tmp);                    for($i=0;$i<count($arraykey);$i++) {             if(!$arraydata)                 break;             $result=$result.$arraykey[$i].":".$arraydata[$i]."\n";         }                    $result=$result."\n";                 }            return $result;            } 

在主循环中用下面几行获得文本行情数据

    $respObj = new RespMsg();

    $ret = $respObj->stockInfo($keyword);

    $result=$this->parserStock($ret);


程序不够完善,例如返回数据的排版格式不够美观、000001上证指数的返回会同时返回000001中国平安的数据等。后面可以完善下。


有兴趣看效果的可以关注微信公众账号named_a_name。