chenbo 5 anni fa
parent
commit
663dc2cd36
2 ha cambiato i file con 79 aggiunte e 45 eliminazioni
  1. 69 7
      lib/sina.class.php
  2. 10 38
      setting.inc.php

+ 69 - 7
lib/sina.class.php

@@ -30,17 +30,79 @@ class Sina
         return $content5;
     }
 
+    /****
+     * @param $url
+     * @return array|bool|string
+     * 对curl_setopt进行封装,消除代码冗余
+     */
+    static private function curl_get_data_list($url, $codeList){           //一次批量获取股票列表
+        if (empty($codeList)) {
+            return 0;
+        }
+
+        $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);//子串
+        $arr1 =  explode(";", $content2);//按股票分割
+        $arr2 = array();
+        $index = 0;
+        $codeIndex = 0;
+        foreach ($arr1 as $key => $item) {
+            $tempItem = substr($item, stripos($item, "=\"") + 2);         //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510,  ="之后部分
+            $tempItem = substr($tempItem, 0, strripos($tempItem, "\""));  //获取     万 科A,30.94,0.14,0.45,584039,178827";         ";之前部分
+            $tempItem = trim($tempItem);
+            if (!empty($tempItem)) {
+                $arr2[$index] = explode(",", $tempItem);//分割
+                $arr2[$index]['code'] = $codeList[$codeIndex];
+                $index++;
+            }
+            $codeIndex++;
+        }
+
+        return $arr2;
+    }
+
+    //获取全部股票代码和名称列表
+    static private function getAllStockCodeAndNameSub($exchange, $sector, $start, $end)
+    {
+        $url = "http://hq.sinajs.cn/list=";
+        $data['exchange'] = $exchange;
+        $data['sector'] = $sector;
+        $codeList = array();
+        $codeIndex = 0;
+        for($code = $start;$code <= $end; $code++){
+            $codeStr = sprintf('%06s', $code);
+            $url .= 's_'.$exchange.$codeStr.',';
+            $codeList[$codeIndex] = $codeStr;
+            $codeIndex++;
+        }
+        $contentList = self::curl_get_data_list($url, $codeList);
+        foreach ($contentList as $key => $item) {
+            $data['code'] .= $item['code'];
+            $data['name'] = trim($item[0]);
+            if (!empty($item[0])) {                            //判断非法股票代码
+                Stock::updateCodeAndName($data);
+            }
+        }
+
+        return;
+
+    }
+
     //获取全部股票代码和名称列表
     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);
+        self::getAllStockCodeAndNameSub(STOCK_EXCHANGE_SZ, STOCK_SECTOR_SZ_MAIN, 000505, 000510);
+
+        return;
+
     }
 
     /****

+ 10 - 38
setting.inc.php

@@ -10,44 +10,16 @@
  * @copyright		芝麻开发(http://www.zhimawork.com)
  */
 
-/** //本注释段可删除
-//示例一(用户状态)
-$USER_STATUS = array(
-	1 => '正常',
-	2 => '待审核',
-	3 => '黑名单'
-);
-
-//示例二(新闻分类)
-$NEWS_SORT = array(
-	1 => '公司新闻',
-	2 => '业界动态'
-);
-
-//示例三(字典)
-$USER_GENDER = array(
-	1 => '男',
-	2 => '女',
-	3 => '未知'
-);
-
-$USER_POLITICAL = array(
-	'01' => '中共党员',
-	'02' => '中共预备党员',
-	'03' => '共青团员',
-	'04' => '民革党员',
-	'05' => '民盟盟员',
-	'06' => '民建会员',
-	'07' => '民进会员',
-	'08' => '农工党党员',
-	'09' => '致公党党员',
-	'10' => '九三学社社员',
-	'11' => '台盟盟员',
-	'12' => '无党派人士',
-	'13' => '群众'
-);
-**/
-
+define("STOCK_EXCHANGE_SH", "sh");       //上交所
+define("STOCK_EXCHANGE_SZ", "sz");       //深交所
+define("STOCK_EXCHANGE_HK", "hk");       //香港联交所
+
+define("STOCK_SECTOR_SH_MAIN", 10);         //上证主板
+define("STOCK_SECTOR_SH_KECHUANG", 11);     //上证科创板
+define("STOCK_SECTOR_SZ_MAIN", 20);         //深证主板
+define("STOCK_SECTOR_SZ_ZHONGXIAO", 21);    //深证中小板
+define("STOCK_SECTOR_SZ_CHUANGYE", 22);     //深证创业板
+define("STOCK_SECTOR_HK", 30);              //香港联交所,不分板
 
 
 ?>