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 相关文章推荐
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
php的memcached客户端memcached
Jun 14 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
Windows7下的php环境配置教程
Feb 28 PHP
php链表用法实例分析
Jul 09 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
微信小程序和php的登录实现
Apr 01 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
摘自启点的main.js
2008/04/20 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
JS重载实现方法分析
2016/12/16 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python实现梯度下降算法
2020/03/24 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
django序列化serializers过程解析
2019/12/14 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
财务会计人员岗位职责
2013/11/30 职场文书
学校四群教育实施方案
2014/06/12 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript