| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- /**
- * @author:王刚涛
- * 用于获取 当天的股票数据并存入数据库,通过$url,可以设置需要获取的时间段
- */
- error_reporting(E_ALL & ~E_NOTICE);
- class Sina
- {
- /****
- * @param $url
- * @return array|bool|string
- * 对curl_setopt进行封装,消除代码冗余
- */
- static private function curl_get_data($url){
- $curlHandle = curl_init();
- curl_setopt($curlHandle, CURLOPT_URL, $url);
- 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);//防止中文乱码
- $content2 = iconv("gbk", "utf-8", $content);//子串
- $content3 = substr($content2, strripos($content2, "=\"") + 2); //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510, ="之后部分
- $content3 = explode(",", $content3);//分割
- return $content3;
- }
- //获取全部股票代码和名称列表
- static public function getAllStockCodeAndName()
- {
- $url = "http://hq.sinajs.cn/list=s_sz000002";
- $content = self::curl_get_data($url);
- $data['code'] = '000002';
- $data['name'] = trim($content[0]);
- $data['exchange'] = 'sz';
- $data['sector'] = 20;
- return Stock::updateCodeAndName($data);
- }
- /****
- * @param string $code
- * @return mixed
- //上证指数表(boniu_index_sh)
- */
- static public function get_boniu_index_sh($code="000001")
- {
- $url = "http://hq.sinajs.cn/list=s_sh".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_sh::add($data);
- }
- /****
- * @param string $code
- * @return mixed
- * 深成指数表(boniu_index_scz)
- */
- static public function get_boniu_index_scz($code="399001")
- {
- $url = "http://hq.sinajs.cn/list=s_sz".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_scz::add($data);
- }
- /***
- * @param string $code
- * @return mixed
- * 上证50指数表(boniu_index_sh50) 000016
- */
- static public function get_boniu_index_sh50($code="000016")
- {
- $url = "http://hq.sinajs.cn/list=s_sh".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_sh50::add($data);
- }
- /***
- * @param string $code
- * @return mixed
- * //沪深300指数表(boniu_index_csi300) 399300
- */
- static public function get_boniu_index_csi300($code="399300")
- {
- $url = "http://hq.sinajs.cn/list=s_sz".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_csi300::add($data);
- }
- //
- /***
- * @param string $code
- * @return mixed
- * 创业板指数表(boniu_index_gem) 399006
- */
- static public function get_boniu_index_gem($code="399006")
- {
- $url = "http://hq.sinajs.cn/list=s_sz".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_gem::add($data);
- }
- /****
- * @param string $code
- * @return mixed
- * //科创50指数( boniu_index_kc50) 000688
- */
- static public function get_boniu_index_kc50($code="000688")
- {
- $url = "http://hq.sinajs.cn/list=s_sh".$code;
- $content3=sina::curl_get_data($url);
- $data['increase_value'] = floatval($content3[3]);//涨跌率
- $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
- $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
- // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
- $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
- $data['open_price'] = floatval($data2[1]);//开盘价
- $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
- $data['hightest_price'] = floatval($data2[4]);//今日最高价
- $data['lowest_price'] = floatval($data2[5]);//今日最低价
- $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
- $data['value'] = (int)($data2[9]);//成交金额以万为单位
- return Index_kc50::add($data);
- }
- //
- /***
- * @param $code
- * @param $date
- * 根据股票代码获取股票的实时信息
- */
- static public function get_info_code($code){
- $stock_code = $code;
- $f = substr($stock_code, 0, 1);
- if ($f == "6" || $f == "0" ) {
- $stock_code = "sh" . $code;
- } else {
- $stock_code = "sz" . $code;
- }
- $url = "http://hq.sinajs.cn/list=" . $stock_code;
- $content3=sina::curl_get_data($url);//封装为函数,执行url获取结果并解析
- return $content3;
- }
- /***
- * @param $code
- * @param $date
- * @return mixed
- * 日k线表 day_k_******(每月存一张表,比如boniu_day_k_202011)
- *
- */
- static public function get_day_k_base($code, $date)
- {
- $stock_code = $code;
- $f = substr($stock_code, 0, 1);
- if ($f == "6" || $f == "0" ) {
- $stock_code = "sh" . $code;
- } else {
- $stock_code = "sz" . $code;
- }
- $url = "http://hq.sinajs.cn/list=" . $stock_code;
- $content3=sina::curl_get_data($url);//封装为函数,
- $data['date'] = $content3[30];
- $data['code'] = $stock_code;
- $data['open_price'] = $content3[1];//开盘价
- $data['close_price'] = $content3[3];//3点之后的当前价格就是收盘价
- $data['hightest_price'] = $content3[4];//今日最高价
- $data['lowest_price'] = floatval($content3[5]);//今日最低价
- $data['amount'] = $content3[8];//成交的股票数,以百为单位
- $data['value'] = $content3[9];//成交金额以万为单位
- return Day_k_base::add($data, $date);
- }
- //除权除息表(boniu_xrxd_log)
- //st记录表(boniu_st_log)
- }
- ?>
|