sina.class.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <?php
  2. /**
  3. * @author:王刚涛
  4. * 用于获取 当天的股票数据并存入数据库,通过$url,可以设置需要获取的时间段
  5. */
  6. error_reporting(E_ALL & ~E_NOTICE);
  7. class sina
  8. {
  9. /****
  10. * @param $url
  11. * @return array|bool|string
  12. * 对curl_setopt进行封装,消除代码冗余
  13. */
  14. static public function curl_get_data($url){
  15. $curlHandle = curl_init();
  16. curl_setopt($curlHandle, CURLOPT_URL, $url);
  17. curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
  18. curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
  19. curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, false);
  20. curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
  21. $content = curl_exec($curlHandle);
  22. curl_close($curlHandle);//防止中文乱码
  23. $content2 = iconv("gbk", "utf-8", $content);//子串
  24. $content3 = substr($content2, strripos($content2, "=") + 1);
  25. $content3 = explode(",", $content3);//分割
  26. return $content3;
  27. }
  28. //市场上所有的股票 boniu_stock
  29. static public function get_boniu_stock($code)
  30. {
  31. }
  32. /****
  33. * @param string $code
  34. * @return mixed
  35. //上证指数表(boniu_index_sh)
  36. */
  37. static public function get_boniu_index_sh($code="000001")
  38. {
  39. $url = "http://hq.sinajs.cn/list=s_sh".$code;
  40. $content3=sina::curl_get_data($url);
  41. $data['increase_value'] = floatval($content3[3]);//涨跌率
  42. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  43. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  44. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  45. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  46. $data['open_price'] = floatval($data2[1]);//开盘价
  47. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  48. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  49. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  50. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  51. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  52. return Index_sh::add($data);
  53. }
  54. /****
  55. * @param string $code
  56. * @return mixed
  57. * 深成指数表(boniu_index_scz)
  58. */
  59. static public function get_boniu_index_scz($code="399001")
  60. {
  61. $url = "http://hq.sinajs.cn/list=s_sz".$code;
  62. $content3=sina::curl_get_data($url);
  63. $data['increase_value'] = floatval($content3[3]);//涨跌率
  64. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  65. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  66. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  67. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  68. $data['open_price'] = floatval($data2[1]);//开盘价
  69. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  70. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  71. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  72. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  73. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  74. return Index_scz::add($data);
  75. }
  76. /***
  77. * @param string $code
  78. * @return mixed
  79. * 上证50指数表(boniu_index_sh50) 000016
  80. */
  81. static public function get_boniu_index_sh50($code="000016")
  82. {
  83. $url = "http://hq.sinajs.cn/list=s_sh".$code;
  84. $content3=sina::curl_get_data($url);
  85. $data['increase_value'] = floatval($content3[3]);//涨跌率
  86. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  87. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  88. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  89. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  90. $data['open_price'] = floatval($data2[1]);//开盘价
  91. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  92. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  93. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  94. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  95. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  96. return Index_sh50::add($data);
  97. }
  98. /***
  99. * @param string $code
  100. * @return mixed
  101. * //沪深300指数表(boniu_index_csi300) 399300
  102. */
  103. static public function get_boniu_index_csi300($code="399300")
  104. {
  105. $url = "http://hq.sinajs.cn/list=s_sz".$code;
  106. $content3=sina::curl_get_data($url);
  107. $data['increase_value'] = floatval($content3[3]);//涨跌率
  108. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  109. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  110. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  111. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  112. $data['open_price'] = floatval($data2[1]);//开盘价
  113. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  114. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  115. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  116. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  117. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  118. return Index_csi300::add($data);
  119. }
  120. //
  121. /***
  122. * @param string $code
  123. * @return mixed
  124. * 创业板指数表(boniu_index_gem) 399006
  125. */
  126. static public function get_boniu_index_gem($code="399006")
  127. {
  128. $url = "http://hq.sinajs.cn/list=s_sz".$code;
  129. $content3=sina::curl_get_data($url);
  130. $data['increase_value'] = floatval($content3[3]);//涨跌率
  131. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  132. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  133. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  134. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  135. $data['open_price'] = floatval($data2[1]);//开盘价
  136. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  137. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  138. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  139. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  140. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  141. return Index_gem::add($data);
  142. }
  143. /****
  144. * @param string $code
  145. * @return mixed
  146. * //科创50指数( boniu_index_kc50) 000688
  147. */
  148. static public function get_boniu_index_kc50($code="000688")
  149. {
  150. $url = "http://hq.sinajs.cn/list=s_sh".$code;
  151. $content3=sina::curl_get_data($url);
  152. $data['increase_value'] = floatval($content3[3]);//涨跌率
  153. $data2=self::get_info_code($code);//调用另一个函数获取其他数据如开盘价等等
  154. $data['increase_price'] = floatval($data2[3]-$data2[2]);//涨跌
  155. // 涨跌价-当日股票最新价与前一日收盘价格(或前一日收盘指数)
  156. $data['date'] = strtotime(date('Y-m-d',time()));//当天的0点时间戳
  157. $data['open_price'] = floatval($data2[1]);//开盘价
  158. $data['close_price'] = floatval($data2[3]);//3点之后的当前价格就是收盘价
  159. $data['hightest_price'] = floatval($data2[4]);//今日最高价
  160. $data['lowest_price'] = floatval($data2[5]);//今日最低价
  161. $data['amount'] = (int)($data2[8]);//成交的股票数,以百为单位
  162. $data['value'] = (int)($data2[9]);//成交金额以万为单位
  163. return Index_kc50::add($data);
  164. }
  165. //
  166. /***
  167. * @param $code
  168. * @param $date
  169. * 根据股票代码获取股票的实时信息
  170. */
  171. static public function get_info_code($code){
  172. $stock_code = $code;
  173. $f = substr($stock_code, 0, 1);
  174. if ($f == "6" || $f == "0" ) {
  175. $stock_code = "sh" . $code;
  176. } else {
  177. $stock_code = "sz" . $code;
  178. }
  179. $url = "http://hq.sinajs.cn/list=" . $stock_code;
  180. $content3=sina::curl_get_data($url);//封装为函数,执行url获取结果并解析
  181. return $content3;
  182. }
  183. /***
  184. * @param $code
  185. * @param $date
  186. * @return mixed
  187. * 日k线表 day_k_******(每月存一张表,比如boniu_day_k_202011)
  188. *
  189. */
  190. static public function get_day_k_base($code, $date)
  191. {
  192. $stock_code = $code;
  193. $f = substr($stock_code, 0, 1);
  194. if ($f == "6" || $f == "0" ) {
  195. $stock_code = "sh" . $code;
  196. } else {
  197. $stock_code = "sz" . $code;
  198. }
  199. $url = "http://hq.sinajs.cn/list=" . $stock_code;
  200. $content3=sina::curl_get_data($url);//封装为函数,
  201. $data['date'] = $content3[30];
  202. $data['code'] = $stock_code;
  203. $data['open_price'] = $content3[1];//开盘价
  204. $data['close_price'] = $content3[3];//3点之后的当前价格就是收盘价
  205. $data['hightest_price'] = $content3[4];//今日最高价
  206. $data['lowest_price'] = floatval($content3[5]);//今日最低价
  207. $data['amount'] = $content3[8];//成交的股票数,以百为单位
  208. $data['value'] = $content3[9];//成交金额以万为单位
  209. return Day_k_base::add($data, $date);
  210. }
  211. //除权除息表(boniu_xrxd_log)
  212. //st记录表(boniu_st_log)
  213. }
  214. ?>