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边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
mysql5详细安装教程
Jan 15 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
用php解析html的实现代码
Aug 08 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
ThinkPHP调试模式与日志记录概述
Aug 22 PHP
php获取url参数方法总结
Nov 13 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
ThinkPHP实现登录退出功能
Jun 29 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 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实现网上点歌(二)
2006/10/09 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
Python3.4解释器用法简单示例
2019/03/22 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python中get和post有什么区别
2020/06/19 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
合作意向书范本
2014/03/31 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2014年测量员工作总结
2014/12/12 职场文书
全陪导游词
2015/02/04 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
运动会3000米加油稿
2015/07/21 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS