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 has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
php去除字符串换行符示例分享
Feb 13 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php对象和数组相互转换的方法
May 12 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
php简单实现批量上传图片的方法
May 09 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
对laravel in 查询的使用方法详解
Oct 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
phpmyadmin的#1251问题
2006/11/25 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
详谈javascript异步编程
2016/02/21 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
Python循环实现n的全排列功能
2019/09/16 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
如何利用python进行时间序列分析
2020/08/04 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
招商专员岗位职责
2014/02/08 职场文书
广告设计应届生求职信
2014/03/01 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
安全生产标语口号
2015/12/26 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python