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 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
最常用的12种设计模式小结
2011/08/09 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python中pillow知识点学习
2018/04/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
布隆过滤器的概述及Python实现方法
2019/12/08 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
python多线程和多进程关系详解
2020/12/14 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
大学军训感言600字
2014/02/25 职场文书
西式婚礼主持词
2014/03/13 职场文书
经典商业广告词
2014/03/13 职场文书
监督检查工作方案
2014/05/28 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python