微信公众平台-股票行情查询
php实现的获取上证,深证 A,B股实时行情的接口,只实现了文本消息回复,K线图可以在图文消息中加上接口url地址就可以显示,具体的接口地址网上可以找,有了股票数据源,弄成图文消息也是轻而易举了。
用到php扩展curl库发送http请求到新浪接口,
下面是sendHttp.php源码
<?php
class RespMsg {
public function weatherInfo() {
}
public function stockInfo($stockCode) {
$ch = curl_init();
$header=array();
$header[]="Content-Type: text/plain; charset=UTF-8";
//$header[]="Host: 192.168.242.128";
$header[]="Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
$header[]="Connection: keep-alive";
//$header[]="Content-Length: ".strlen($menuJson);
if(empty($stockCode))
$stockCode="000001";
if(strncmp($stockCode,"00",2)==0 || strncmp($stockCode,"200",3)==0 || strncmp($stockCode,"300",3)==0 || strncmp($stockCode,"399",3)==0) {
$url = "http://hq.sinajs.cn/list=sz".$stockCode;
} else if(strncmp($stockCode,"60",2)==0 || strncmp($stockCode,"900",3)==0) {
$url = "http://hq.sinajs.cn/list=sh".$stockCode;
}
if(strcmp($stockCode,"000001")==0) {
$url = "http://hq.sinajs.cn/list=sh".$stockCode.",sz".$stockCode;
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $menuJson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
if(curl_errno($ch)) {
print curl_error($ch);
$res="0";
} else {
curl_close($ch);
}
//@header('Content-Type:text/plain; charset=utf-8');
//解决中文乱码
$res=mb_convert_encoding($res,"UTF-8","EUC-CN");
return $res;
}
public function newsInfo() {
}
}
?>
//解析新浪接口返回的函数
require("sendHttp.php");
......
private function parserStock($str) {
$arraykey=array("股票名字",
"今日开盘价",
"昨日收盘价",
"当前价格",
"今日最高价",
"今日最低价",
"竞买价",
"竞卖价",
"成交数(手)",
"成交金额(万)",
"买一(股)",
"买一(元)",
"买二(股)",
"买二(元)",
"买三(股)",
"买三(元)",
"买四(股)",
"买四(元)",
"买五(股)",
"买五(元)",
"卖一(股)",
"卖一(元)",
"卖二(股)",
"卖二(元)",
"卖三(股)",
"卖三(元)",
"卖四(股)",
"卖四(元)",
"卖五(股)",
"卖五(元)",
"日期",
"时间");
if($str=="0")
return $result;
for($i=0,$pos2=0;$i<strlen($str);$i=$i+$pos2) {
if(!($pos1=stripos($str,"=",$pos2))) {
break;
}
if(!($pos2=stripos($str,';',$pos1)))
break;
$tmp=substr($str,$pos1+2,$pos2-$pos1-3);
if(strlen($tmp)==0)
return $result;
$arraydata=explode(",",$tmp);
for($i=0;$i<count($arraykey);$i++) {
if(!$arraydata)
break;
$result=$result.$arraykey[$i].":".$arraydata[$i]."\n";
}
$result=$result."\n";
}
return $result;
}
在主循环中用下面几行获得文本行情数据
$respObj = new RespMsg();
$ret = $respObj->stockInfo($keyword);
$result=$this->parserStock($ret);
程序不够完善,例如返回数据的排版格式不够美观、000001上证指数的返回会同时返回000001中国平安的数据等。后面可以完善下。
有兴趣看效果的可以关注微信公众账号named_a_name。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)