php - 在序列化字符串中发现 NULL 字符

标签 php serialization deserialization

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

这是它在 Notepad++ 中的一小段摘录

enter image description here

关于如何反序列化它有什么想法吗?

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

最佳答案

所以 serialize 函数使用语法 null*null 来标识成员变量,正如您在此处显示的那样。

空字符在字符串中编码为 \0 并且通常不会显示在输出中。要反序列化,您需要将这些“空”文本转换回 \0

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

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

然后当你准备反序列化时,你可以做相反的事情

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

关于php - 在序列化字符串中发现 NULL 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728925/

相关文章:

ruby - 使用 Marshal 将 Sqlite 内存数据库转储到磁盘

java - eclipse 中的 serialVersionUID 字段警告

c# - 在 .NET Core 3 中反序列化使用 .NET Framework 创建的二进制文件时出现问题

javascript - 从 MySQL 查询到 PHP 数组的 jQuery 自动完成/提前输入

php - 如何将 Eloquent 中的连接设置为每个查询的默认值?

php - 在 Ajax 调用中传递包含空格的值

c# - 如何将货币列表从 openexchangerates.org 反序列化为 C# 自定义类或对象?

java - 如何序列化/反序列化 arrayList(Object)

flutter - 如何使用具有相同类名的两种反序列化技术

php - 通过 phpseclib : SSH2 写入 "$_SERVER text"的 php 文件