financeTencent.class.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: 王刚涛
  5. * Date: 2020/11/29
  6. * Time: 18:51
  7. */
  8. class FinanceTencent
  9. {
  10. /****
  11. * @param $code
  12. * @return string
  13. * 判断股票的类型,属于创业板,科创板,主板,$code
  14. */
  15. static public function stock_block($code)
  16. {
  17. if (strncmp($code, "30", 2) == 0) {
  18. //创业板
  19. $code = "sz" . $code;
  20. } else if (strncmp($code, "68", 2) == 0) {
  21. //科创板
  22. $code = "sh" . $code;
  23. } else if (strncmp($code, "60", 2) == 0) {
  24. //主板
  25. $code = "sh" . $code;
  26. } else if (strncmp($code, "00", 2) == 0) {
  27. //中小板
  28. $code = "sz" . $code;
  29. }
  30. return $code;
  31. }
  32. /****
  33. * @param $url
  34. * @return array|bool|string
  35. * 对curl_setopt进行封装,消除代码冗余
  36. */
  37. static private function curl_get_data($url)
  38. {
  39. $ch = curl_init();
  40. curl_setopt($ch, CURLOPT_URL, $url);
  41. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  42. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  43. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  44. $content = curl_exec($ch);
  45. curl_close($ch);
  46. $content1 = substr($content, stripos($content, "=\"") + 2); //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510, ="之后部分
  47. $content2 = explode("~", iconv("gbk", "utf-8", $content1));//以换行符进行分割字符串
  48. return $content2;
  49. }
  50. /***
  51. * @param $stock_code
  52. * @return mixed
  53. * 获取股票的基本静态数据,
  54. */
  55. static public function get_stock_data($stock_code)
  56. {
  57. $data=array();
  58. $code = self::stock_block($stock_code);
  59. $url = "http://qt.gtimg.cn/q=" . $code;
  60. //市盈率,流通市值,总市值,市净率
  61. $content1 = self::curl_get_data($url);
  62. // 解析返回的历史数据
  63. if (!empty($content1)) {
  64. $data["pe_static"] = floatval($content1[39]);//市盈率
  65. $data["tradable_value"] = floatval($content1[44]);//流通市值
  66. $data["total_value"] = floatval($content1[45]);//总市值
  67. $data["pb"] = floatval($content1[46]);//市净率
  68. }
  69. return Stock::update($stock_code,$data);
  70. }
  71. }