深圳通余额查询的API,可以通过深圳通号码查询到余额及卡有效期等信息。 用到Domxpath和Curl两方面的知识。 源码已托管到github,另外要加载个类:myclass 项目地址:https://github.com/skiy/dev 演示:http://api.oupag.com/dev/api/shenzhentong.php?cardn
深圳通余额查询的API,可以通过深圳通号码查询到余额及卡有效期等信息。
用到Domxpath和Curl两方面的知识。
源码已托管到github,另外要加载个类:myclass
项目地址:https://github.com/skiy/dev
演示:http://api.oupag.com/dev/api/shenzhentong.php?cardno=293005762
update 2014.10.20 22:53
原来可以直接用GET方式,不需要用curl的POST方式来处理,这样响应快些~
PHP
curls("http://query.shenzhentong.com:8080/sztnet/qryCard.do", false, $post_cardno);
//直接GET方式
$page = $data->curls("http://query.shenzhentong.com:8080/sztnet/qryCard.do?cardno={$cardno}");
$page = $data->pageToDom($page, "GBK");
$tr = $page->query("//table[@class='tableact']/tr/td");
function getTextContent($m_query, $m_id) {
$myTXT = str_replace(":", "", $m_query->item($m_id)->textContent);
return $myTXT;
}
//截止时间内余额
preg_match("/截止到([^\)]*)/", getTextContent($tr, 2), $expires);
$results = array(
"card_number" => (int) getTextContent($tr, 1),
"card_balance" => getTextContent($tr, 3),
"balance_time" => $expires[1],
"card_validity" => getTextContent($tr, 5),
"current_time" => date("Y-m-d H:i:s", time()));
echo json_encode($results);
?>
源码,数组 array($url, 1)1为file_get_contents,2为curl
*/
public function pageToDom($data, $encoded = "utf-8"){
if (is_array($data)) {
if ($data[1] == 1) {
$datas = @file_get_contents($data[0]);
}
if ($data[1] == 2) {
$datas = @$this->curls($data[0]);
}
} else {
$datas = $data;
}
if (empty($datas)){
return false;
}
$meta = '';
$datas = $meta.$datas;
$xmldoc = new DOMDocument();
@$xmldoc->loadHTML($datas);
$xmldoc->normalizeDocument();
$domresult = new Domxpath($xmldoc);
return $domresult;
}
}
本文原创发布php中文网,转载请注明出处,感谢您的尊重!