PHP中使用CURL获得JSON数据的处理方案 文件:curl_init.php
header('Content-Type:text/json;charset=UTF-8');
//header("Content-type:text/html;charset=utf-8");
//http://www.php.cn/php-weizijiaocheng-393305.html
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//获取的信息以文件流的形式返回,而不是直接输出
curl_setopt($ch, CURLOPT_URL, "http://www.kuaidi100.com/query?type=ems&postid=9972311155713");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$resp = curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
$resp = json_decode($resp,true);
复制源码可以直接PHP环境中测试。
- 文件头header(‘Content-Type:text/json;charset=UTF-8’);,表明文件是json字符串,如果直接在该文件内部使用HTML处理,则无效;但是可以通过ajax调用数据;
- header(“Content-type:text/html;charset=utf-8”);,表明文件是html类型,可以直接在改文件内部使用HTML标记语言处理;
- http://www.kuaidi100.com/query?type=ems&postid=9972311155713,type是拼音组成的快递方式参数,postid为快递单号参数。
print_r($resp);
输入效果:
[data] => Array
(
[0] => Array
(
[time] => 2019-03-23 15:30:38
[ftime] => 2019-03-23 15:30:38
[context] => [邮政宁波市万里邮政所]在 宁波 已签收,他人代收:雍城世家57幢菜鸟驿站,投递员:张兵:18157472130
[location] => 邮政宁波市万里邮政所
)
[1] => Array
(
[time] => 2019-03-23 13:35:32
[ftime] => 2019-03-23 13:35:32
[context] => 【邮政宁波市万里邮政所】安排投递,投递员:张兵:18157472130
[location] => 邮政宁波市万里邮政所
)
[2] => Array
(
[time] => 2019-03-23 12:55:53
[ftime] => 2019-03-23 12:55:53
[context] => 到达【邮政宁波市万里邮政所】
[location] => 邮政宁波市万里邮政所
)
[3] => Array
(
[time] => 2019-03-23 12:11:58
[ftime] => 2019-03-23 12:11:58
[context] => 离开【宁波中心】,下一站【邮政宁波市万里邮政所】
[location] => 宁波中心
)
[4] => Array
(
[time] => 2019-03-23 09:59:46
[ftime] => 2019-03-23 09:59:46
[context] => 到达【宁波中心】
[location] => 宁波中心
)
[5] => Array
(
[time] => 2019-03-23 06:15:56
[ftime] => 2019-03-23 06:15:56
[context] => 离开【杭州二枢纽邮件处理中心】,下一站【宁波中心】(经转)
[location] => 杭州二枢纽邮件处理中心
)
[6] => Array
(
[time] => 2019-03-23 04:10:16
[ftime] => 2019-03-23 04:10:16
[context] => 到达【杭州二枢纽邮件处理中心】(经转)
[location] => 杭州二枢纽邮件处理中心
)
[7] => Array
(
[time] => 2019-03-21 06:42:28
[ftime] => 2019-03-21 06:42:28
[context] => 离开【邮政哈尔滨邮件转运分局江北省际车间】,下一站【杭州二枢纽邮件处理中心】
[location] => 邮政哈尔滨邮件转运分局江北省际车间
)
[8] => Array
(
[time] => 2019-03-20 17:51:00
[ftime] => 2019-03-20 17:51:00
[context] => 到达【邮政哈尔滨邮件转运分局江北省际车间】
[location] => 邮政哈尔滨邮件转运分局江北省际车间
)
[9] => Array
(
[time] => 2019-03-20 15:43:46
[ftime] => 2019-03-20 15:43:46
[context] => 离开【哈市电商】,下一站【哈市松北】
[location] => 哈市电商
)
[10] => Array
(
[time] => 2019-03-20 14:30:41
[ftime] => 2019-03-20 14:30:41
[context] => 哈尔滨 【哈市电商】已收件,揽投员:王锦海12333333333
[location] => 哈市电商
)
)
处理其中的data二位数据,foreach即可:
//输出json中的数据;
foreach ($resp["data"] as $key => $v) {
echo "到达时间:".$resp["data"][$key]['time']."";
echo "处理时间:".$resp["data"][$key]['ftime']."";
echo "处理中心:".$resp["data"][$key]['context']."";
echo "到达网点:".$resp["data"][$key]['location']."";
}
如果要正常显示,选择header(“Content-type:text/html;charset=utf-8”);文件头