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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
sphinx增量索引的一个问题
Jun 14 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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最简单的删除目录与文件实现方法
2014/11/28 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
python将ip地址转换成整数的方法
2015/03/17 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python多线程和队列操作实例
2015/06/21 Python
Python验证码识别的方法
2015/07/10 Python
django定期执行任务(实例讲解)
2017/11/03 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
python 绘制正态曲线的示例
2020/09/24 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
医院学雷锋活动策划方案
2014/02/15 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
疾病防治方案
2014/05/31 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015公司年度工作总结
2015/05/14 职场文书
学校教学工作总结2015
2015/05/19 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书