首页 > 后端开发 > php教程 > php 股票信息查询类

php 股票信息查询类

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-07-29 09:12:45
原创
1155 人浏览过

http://www.51boxue.net/phper/php-cy/95985.htm

股票信息查询功能我们是需要抓取第三方的数据,然后我们再把这些数据进行分析组成自己想要的,下面我们来看一个php 股票信息查询类。
GitHub 地址:Github.com/widuu/stock

<?php class stock{

    /**
     * 股票数据接口
     */

    const STOCK_URL = "http://apis.baidu.com/apistore/stockservice/stock";
   
    /**
     * 通过拼音或者汉字获取股票代码
     */

    const SOCKET_SUGGEST = "http://cjhq.baidu.com/suggest?code5=";

    /**
     * 单态实例
     */

    private static $instance;

    /**
     * API 密钥
     */

    private static $apikey;

    /**
     * 实例化类和指定API KEY
     * @param  apikey  string
     * @return instance object
     */

    public static function getInstance($apikey){
       
        if( self::$instance == NULL ){
            self::$instance = new self;
            self::$apikey = $apikey;
        }

        return self::$instance;
    }

    /**
     * 获取股票名称
     * @param  stockid    string
     * @return stockName  string
     */

    public static function getName($stockid){
        $result = self::getSingleStock($stockid);
        return $result[&#39;name&#39;];
    }

    /**
     * 获取最后更新时间
     * @param  stockid string
     * @return time    string
     */

    public static function getTime($stockid){
        $result = self::getSingleStock($stockid);
        return $result[&#39;date&#39;].$result[&#39;time&#39;];
    }

    /**
     * 获取K线图地址
     * @param  stockid  string
     * @param  date     string  min/day/week/mouth
     * @return imageUrl string
     */

    public static function getKline($stockid,$date=&#39;min&#39;){
        $result = self::getSingleStock($stockid);
        return $result[&#39;klinegraph&#39;][$date.&#39;url&#39;];
    }

    /**
     * 抓取整只股票的数据
     * @param  stockid  string
     * @return stock infomation array
     */

    public static function getSingleStock($stockid){
        $type = preg_match(&#39;/(\d+){6}/is&#39;, $stockid);
        if ( $type == 0 ){
            $stockid = self::getStockId($stockid);
        }
        $stock_url = self::STOCK_URL."?stockid=".$stockid;
        $result = self::httpGet( $stock_url , true );
        if( $result[&#39;errNum&#39;] != 0 ){
            throw new <strong>Exception($result['errMsg'], 1);
            return;
        }
        return $result['retData'];
    }

    /**
     * 输入拼音或者汉字来获取股票代码
     * @param  name    string
     * @return stockid string
     */

    private static function getStockId($name){
        $result = self::httpGet( self::SOCKET_SUGGEST.urlencode(iconv('utf-8', 'GBK', $name)),false );
        if (empty($result)){
            throw new <strong>Exception</strong>("stock name not exists", 2);
            return;
        }
        $stockid = $result['Result'][0]['code'];
        $stock   = explode('.', $stockid);
        return   $stock[1].$stock[0];
    }

    /**
     * GET获取方法
     * @param  param string  参数
     * @author widuu
     */

    private static function httpGet($url,$header=false) {
        $curlHandle = curl_init();
        curl_setopt( $curlHandle , CURLOPT_URL, $url );
        if( $header ){
           curl_setopt( $curlHandle , CURLOPT_HTTPHEADER  , array('apikey:'.self::$apikey));
        }
        curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
        $content = curl_exec( $curlHandle );
        curl_close( $curlHandle );
        return $header ? json_decode($content,true) :json_decode(iconv('GBK','utf-8',trim($content)),true);
    }
}

//测试代码
stock::getInstance("5040bcbfebb0a4cffc7be278723255aa");
print_r(stock::getSingleStock('sh601000'));
echo stock::getKline('紫金矿业');
?>
登录后复制

以上就介绍了php 股票信息查询类,包括了Exception,Git,github方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板