在线建站培训
您的位置: 魔客吧 cms教程 discuz教程 查看内容

Discuz 反序列化数组讲解

2018-6-24 16:28 | 发布者: moke | 栏目:discuz教程

先来实例解释一下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)}-->
第二步反序列化数组

[代码]php代码:

魔客吧温馨提示:在魔客吧有许多的精品 DZ模板 ,如果你有需要,那么赶快去下载吧!

最新分享资源

最新评论

验证码 换一个