VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php 股票信息查询类

股票信息查询功能我们是需要抓取第三方的数据,然后我们再把这些数据进行分析组成自己想要的,下面我们来看一个php 股票信息查询类.

今天一个二逼朋友让我帮忙写个股票查询的类,来集成到微信中,所以花了一点时间写了一个不完整的,哈哈,如果有想玩的人,可以继续提交代码,让它变得完善起来!!

GitHub 地址:github.com/widuu/stock,代码如下:

  1. class stock{ 
  2.     /** 
  3.      * 股票数据接口 
  4.      */ 
  5.     const STOCK_URL = "http://apis.baidu.com/apistore/stockservice/stock"
  6.      
  7.     /** 
  8.      * 通过拼音或者汉字获取股票代码 
  9.      */ 
  10.     const SOCKET_SUGGEST = "http://cjhq.baidu.com/suggest?code5="
  11.     /** 
  12.      * 单态实例 
  13.      */ 
  14.     private static $instance
  15.     /** 
  16.      * API 密钥 
  17.      */ 
  18.     private static $apikey
  19.     /** 
  20.      * 实例化类和指定API KEY 
  21.      * @param  apikey  string 
  22.      * @return instance object 
  23.      */ 
  24.     public static function getInstance($apikey){ 
  25.          
  26.         if( self::$instance == NULL ){ 
  27.             self::$instance = new self; 
  28.             self::$apikey = $apikey
  29.         } 
  30.         return self::$instance
  31.     } 
  32.     /** 
  33.      * 获取股票名称 
  34.      * @param  stockid    string  
  35.      * @return stockName  string 
  36.      */ 
  37.     public static function getName($stockid){ 
  38.         $result = self::getSingleStock($stockid); 
  39.         return $result['name']; 
  40.     } 
  41.     /** 
  42.      * 获取最后更新时间 
  43.      * @param  stockid string  
  44.      * @return time    string 
  45.      */ 
  46.     public static function getTime($stockid){ 
  47.         $result = self::getSingleStock($stockid); 
  48.         return $result['date'].$result['time']; 
  49.     } 
  50.     /** 
  51.      * 获取K线图地址 
  52.      * @param  stockid  string  
  53.      * @param  date     string  min/day/week/mouth 
  54.      * @return imageUrl string 
  55.      */ 
  56.     public static function getKline($stockid,$date='min'){ 
  57.         $result = self::getSingleStock($stockid); 
  58.         return $result['klinegraph'][$date.'url']; 
  59.     } 
  60.     /** 
  61.      * 抓取整只股票的数据 
  62.      * @param  stockid  string  
  63.      * @return stock infomation array 
  64.      */ 
  65.     public static function getSingleStock($stockid){ 
  66.         $type = preg_match('/(\d+){6}/is'$stockid); 
  67.         if ( $type == 0 ){ 
  68.             $stockid = self::getStockId($stockid); 
  69.         } 
  70.         $stock_url = self::STOCK_URL."?stockid=".$stockid
  71.         $result = self::httpGet( $stock_url , true ); 
  72.         if$result['errNum'] != 0 ){ 
  73.             throw new Exception($result['errMsg'], 1); 
  74.             return
  75.         } 
  76.         return $result['retData']; 
  77.     } 
  78.     /** 
  79.      * 输入拼音或者汉字来获取股票代码 
  80.      * @param  name    string  
  81.      * @return stockid string 
  82.      */ 
  83.     private static function getStockId($name){ 
  84.         $result = self::httpGet( self::SOCKET_SUGGEST.urlencode(iconv('utf-8''GBK'$name)),false ); 
  85.         if (emptyempty($result)){ 
  86.             throw new Exception("stock name not exists", 2); 
  87.             return
  88.         } 
  89.         $stockid = $result['Result'][0]['code']; 
  90.         $stock   = explode('.'$stockid); 
  91.         return   $stock[1].$stock[0]; 
  92.     } 
  93.     /** 
  94.      * GET获取方法 
  95.      * @param  param string  参数  
  96.      * @author widuu  
  97.      */ 
  98.     private static function httpGet($url,$header=false) {  
  99.         $curlHandle = curl_init();  
  100.         curl_setopt( $curlHandle , CURLOPT_URL, $url ); 
  101.         if$header ){ 
  102.            curl_setopt( $curlHandle , CURLOPT_HTTPHEADER  , array('apikey:'.self::$apikey));  
  103.         }  
  104.         curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );  
  105.         curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false); 
  106.         curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false); 
  107.         curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );  
  108.         $content = curl_exec( $curlHandle ); 
  109.         curl_close( $curlHandle );  
  110.         return $header ? json_decode($content,true) :json_decode(iconv('GBK','utf-8',trim($content)),true);  
  111.     } //phpfensi.com 
  112. //测试代码 
  113. stock::getInstance("5040bcbfebb0a4cffc7be278723255aa"); 
  114. print_r(stock::getSingleStock('sh601000')); 
  115. echo stock::getKline('紫金矿业'); 
  116.  



出处:http://www.phpfensi.com/php/20160825/10578.html


相关教程