finance163.class.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 王刚涛
  5. * Date: 2020/11/26
  6. * Time: 11:38
  7. */
  8. class Finance163
  9. {
  10. /****
  11. * @param $code
  12. * @return string
  13. * 返回股票所属的板块,在股票代码前拼接0或者1
  14. */
  15. static public function stock_block($code)
  16. {
  17. $f = substr($code, 0, 1);
  18. if ($f == "6") {
  19. $stock_code = "0" . $code;
  20. } else {
  21. $stock_code = "1" . $code;
  22. }
  23. return $stock_code;
  24. }
  25. /***
  26. * @param $code
  27. * @return int
  28. * 获取历史交易数据
  29. */
  30. static public function get_history_trade_data($stock_code,$start_date,$end_date)
  31. {
  32. $code = self::stock_block($stock_code);
  33. $url = "http://quotes.money.163.com/service/chddata.html?code=" . $code . "&start=" . $start_date . "&end=" . $end_date . "&fields=TOPEN;HIGH;LOW;TCLOSE;VATURNOVER;VOTURNOVER;LCLOSE;CHG;PCHG;TURNOVER";
  34. //构建所要发送的url
  35. $curlHandle = curl_init();
  36. curl_setopt($curlHandle, CURLOPT_URL, $url);
  37. curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
  38. curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
  39. curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, false);
  40. curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
  41. $content = curl_exec($curlHandle);
  42. curl_close($curlHandle);
  43. $content1 = explode("\n", $content);//以换行符进行分割字符串
  44. if (!empty($content1[1])) {
  45. for ($i = count($content1) - 1; $i >0; $i--) {//排除日期,代码等标题栏
  46. if (!empty($content1[$i])) {
  47. $content3 = explode(",", iconv("gbk", "utf-8", $content1[$i]));
  48. }
  49. else{
  50. continue;
  51. }
  52. // 解析返回的历史数据
  53. $t = explode("-",$content3[0]);
  54. $date = trim($t[0].$t[1]);
  55. $time = trim($t[0].$t[1].$t[2]);
  56. $data['date'] = $date;//用于创建表
  57. $data['time'] = $time;//用于获取时间戳
  58. $data['code'] = intval(explode("'",$content3[1])[1]);
  59. $data['open_price'] = floatval($content3[3]);
  60. $data['hightest_price'] = floatval($content3[4]);
  61. $data['lowest_price'] = floatval($content3[5]);
  62. $data['close_price'] = floatval($content3[6]);
  63. $data['value'] = floatval($content3[7]);
  64. $data['amount'] = floatval($content3[8]);
  65. $data['close_price_qfq'] = floatval($content3[9]);
  66. $data['increase_price'] = floatval($content3[10]);
  67. $data['increase_value'] = floatval($content3[11]);
  68. $data['turnover'] = floatval($content3[12]);//换手率
  69. //将所要存储的数据放入一个数组中
  70. $stock_name = $content3[1];
  71. if ($data['close_price'] == 0) {//当收盘价为0的时候,表示此时的基于9-3点,所以不存储
  72. continue;
  73. }
  74. if (!empty($data)) {
  75. // Index::add($stock_name, $content3[0]);//将这支股票的股票名称和股票代码存入
  76. $msg= Day_k_base::insert($data,$date);//将这支股票的历史数据存入数据库
  77. }
  78. }
  79. }
  80. return $msg;
  81. }
  82. }
  83. ?>