php基于curl实现的股票信息查询类实例


Posted in PHP onNovember 11, 2016

本文实例讲述了php基于curl实现的股票信息查询类。分享给大家供大家参考,具体如下:

股票信息查询功能我们是需要抓取第三方的数据,然后我们再把这些数据进行分析组成自己想要的,下面我们来看一个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 (emptyempty($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('紫金矿业');

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
如何使用php实现评委评分器
Jul 31 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
Feb 04 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
PHP中STDCLASS用法实例分析
Nov 11 #PHP
php遍历替换目录下文件指定内容的方法
Nov 10 #PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 #PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 #PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 #PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 #PHP
php事件驱动化设计详解
Nov 10 #PHP
You might like
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP中cookie知识点学习
2018/05/06 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
python缩进区别分析
2014/02/15 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python的dict判断key是否存在的方法
2020/12/09 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
中学生获奖感言
2014/02/04 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
岗位聘任报告
2015/03/02 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
观后感开头
2015/06/19 职场文书
生日宴会祝酒词
2015/08/10 职场文书