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']."<br>"; echo "处理时间:".$resp["data"][$key]['ftime']."<br>"; echo "处理中心:".$resp["data"][$key]['context']."<br>"; echo "到达网点:".$resp["data"][$key]['location']."<hr>"; }
如果要正常显示,选择header(“Content-type:text/html;charset=utf-8”);文件头