|
|
@@ -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;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/****
|