先来实例解释一下PHP中的序列化数组
[代码]php代码:
1
<?php
2
$arr = array('张三','李四');//界说数组
3
$str = serialize($arr);//这儿是序列化$arr
4
echo $str."<br/><br/>";
5
$new_arr = unserialize($str);//这儿是反序列化$str
6
print_r($new_arr);
7
?>
序列化对应的函数为 serialize(), 反序列化对应的函数为:unserialize() 。
能够将前者序列化之后的数据存到数据库的某个字段中,使用时再经过反序列化处理。

那么,在discuz中,咱们经过一个实例来了解怎么反序列化处理
以分类信息中上传图片字段为例。这个字段是选用先把内容包装到一个数组(内容包括图片的存储途径和这个图片的id),然后序列化保存在value字段中。假如咱们只需求其间的图片途径。那么就需求对存入到value字段中的序列化数组进行反序列化。当然,这儿需求留意的一个问题,如图:


在这儿咱们需求留意一个符号。反斜杠“\”。(猜想是因为修改内容后生成的)。所以,在这儿咱们就需求多一道工序。
首要是查询数据库,这儿疏忽.....(所用的表是:pre_forum_typeoptionvar)
查询完,首要需求去掉反斜杠才干对数组反序列化处理。直接反序列化数组值是空。
第一步去掉反斜杠

[代码]php代码:
1
<!--{eval $value_1 = stripcslashes($value)}-->
第二步反序列化数组

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:Discuz 反序列化数组讲解发布于2023-02-19 01:22:14

相关推荐