Class stock{ /** * Stock Data interface */ Const STOCK_URL = "Http://apis.baidu.com/apistore/stockservice/stock";
/** * Get stock code through pinyin or Chinese characters */ Const SOCKET_SUGGEST = "http://cjhq.baidu.com/suggest?code5="; /** * Single State instance */ private static $instance; /** * API Key */ private static $apikey; /** * Instantiate class and specify 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; } /** * Get stock Name * @param stockid string * @return StockName string */ public static function GetName ($stockid) { $result = Self::getsinglestock ($stockid); return $result [' name ']; } /** * Get last update time * @param stockid string * @return Time string */ public static function GetTime ($stockid) { $result = Self::getsinglestock ($stockid); return $result [' Date ']. $result [' time ']; } /** * Get chart Address * @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 ']; } /** * Capture the entire stock of data * @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 ']; } /** * Input Pinyin or Chinese characters to get stock code * @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 (empty ($result)) { throw new Exception ("Stock name NOT EXISTS", 2); return; } $stockid = $result [' Result '][0][' code ']; $stock = Explode ('. ', $stockid); return $stock [1]. $stock [0]; } /** * Get Fetch method * @param param string parameter * @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); } } //test Code Stock::getinstance ("5040BCBFEBB0A4CFFC7BE278723255AA"); Print_r (Stock::getsinglestock (' sh601000 ')); Echo stock::getkline (' Zijin mining '); |