php抓取网页json数据(PHP中JSON的应用总结PHP操作JSON可以使用_decode数组)
优采云 发布时间: 2022-04-04 15:04php抓取网页json数据(PHP中JSON的应用总结PHP操作JSON可以使用_decode数组)
序列化序列化
在一些旧的WEB系统中,我们可能会看到一大串似乎有特殊含义的字符串文本内容存储在数据库或文本文件中。仔细看会发现,里面有数据类型、结构等信息,但是手动读取并不方便,只适合PHP程序读取。PHP 的 serialize 序列化并存储数组。假设我们有一个这样的数组:
$arr = array(
"0" => array(
"gameName" => "德乙",
"homeName" => "比勒费尔德",
"guestName" => "不伦瑞克",
"endTime" => "2015-08-21"
),
"1" => array(
"gameName" => "英超",
"homeName" => "*敏*感*词*",
"guestName" => "阿斯顿维拉",
"endTime" => "2015-08-22"
)
);
我们希望将此数组的内容存储在数据库或文本文件中,以便在其他地方读取。
$serialize = serialize($arr);
echo $serialize;
我们使用PHP的serialize对数组进行序列化,输出如下结果:
a:2:{i:0;a:4:{s:8:"gameName";s:6:"德乙";s:8:"homeName";s:15:"比勒费尔德";s:9:"guestName";s:12:"不伦瑞克";s:7:"endTime";s:10:"2015-08-21";}i:1;a:4:{s:8:"gameName";s:6:"英超";s:8:"homeName";s:9:"*敏*感*词*";s:9:"guestName";s:15:"阿斯顿维拉";s:7:"endTime";s:10:"2015-08-22";}}
上面输出的结果看起来很复杂,其实很简单。它说明了一些数据类型和结构。
a:2 表示这是一个有两个元素的数组;
i:0 指序列索引;
a:4 表示有 4 个字段
s:8:"gameName" 表示这是一个8个字符的字符串(字符串)
在实际开发中,我们只存储序列化后的数据,并不关心存储格式和字段含义。如果要将序列化的数据恢复到数组中,可以使用 unserialize() 函数。
print_r(unserialize($serialize));
上面的代码可以打印出数组。
JSON数据解析
我们知道 PHP 可以使用 json_encode() 和 json_decode() 两个函数来操作 JSON。json_encode()可以将数组转换成json格式的文本数据,方便存储和读取,而json_decode()可以直接将json数据转换成数组,方便调用。
$jsonencode = json_encode($arr);
echo $jsonencode;
输出:
[{"gameName":"\u5fb7\u4e59","homeName":"\u6bd4\u52d2\u8d39\u5c14\u5fb7","guestName":"\u4e0d\u4f26\u745e\u514b","endTime":"2015-08-21"},{"gameName":"\u82f1\u8d85","homeName":"\u6c34\u6676\u5bab","guestName":"\u963f\u65af\u987f\u7ef4\u62c9","endTime":"2015-08-22"}]
显然,使用 JSON 后,数据空间比 serialize 小。输出结果中的中文字符串被编码。仔细看,它们对应的是键值,便于人工识别。关键是JSON格式的数据,方便其他语言阅读识别。所以有人说它是 XML 的替代品。JSON格式的数据可以完成与WEB前端JS的异步交互过程。如果要将 json 还原为数组,可以使用 json_decode() 函数。
print_r(json_decode($jsonencode,true));
对JSON应用感兴趣的同学可以参考本站文章:JSON在PHP中的应用
总结
PHP的serialize对数组进行序列化,方便存储,JSON格式的数据不仅存储方便,还可以用javascript等其他语言读取。它们可能在性能上有细微的差别。如果前后端交互较多,推荐使用JSON。结合PHP、Javascript、JSON和Ajax可以完成强大的数据交互功能。