在序列化字符串中找到NULL字符

时间:2012-07-30 20:16:19

标签: php serialization deserialization

我无法unserialize()serialize()'的回溯并保存到文本文件中。我不能复制粘贴字符串,它只在NULL之前复制数据,所以我无法在PHP中反序列化它。

以下是Notepad ++中的简短摘录

enter image description here

任何想法如何反序列化?

注意:我使用error_log($backtrace, 3, 'file.log');保存文件,然后只需在Notepad ++中打开即可复制粘贴,但我无法复制过去的NULL字符。

1 个答案:

答案 0 :(得分:2)

因此,serialize函数使用语法null * null标识成员变量,如此处所示。

空字符在字符串中编码为\0,通常不会显示在输出中。要反序列化,你需要转换那些" null"文字回到\0

当我编写一个序列化数组时,我通过一个将\0转换为[NULL]的函数运行它。

$string = str_replace("\0","[NULL]",$string);

然后,当您准备反序列化时,您可以执行相反的操作

$string = str_replace("[NULL]","\0",$string);