php stock,php 股票信息查询类

今天一个二逼朋友让我帮忙写个股票查询的类,来集成到微信中,所以花了一点时间写了一个不完整的,哈哈,如果有想玩的人,可以继续提交代码,让它变得完善起来!!

GitHub 地址:github.com/widuu/stock

代码如下:

 代码如下

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['name'];

}

/**

* 获取最后更新时间

* @param  stockid string

* @return time    string

*/

public static function getTime($stockid){

$result = self::getSingleStock($stockid);

return $result['date'].$result['time'];

}

/**

* 获取K线图地址

* @param  stockid  string

* @param  date     string  min/day/week/mouth

* @return imageUrl string

*/

public static function getKline($stockid,$date='min'){

$result = self::getSingleStock($stockid);

return $result['klinegraph'][$date.'url'];

}

/**

* 抓取整只股票的数据

* @param  stockid  string

* @return stock infomation array

*/

public static function getSingleStock($stockid){

$type = preg_match('/(\d ){6}/is', $stockid);

if ( $type == 0 ){

$stockid = self::getStockId($stockid);

}

$stock_url = self::STOCK_URL."?stockid=".$stockid;

$result = self::httpGet( $stock_url , true );

if( $result['errNum'] != 0 ){

throw new 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 Exception("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('紫金矿业');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值