ZH
我的工具

PHP 反序列化 / 序列化 在线工具

把 PHP 序列化数据显示为 JSON、print_r、var_export 或 var_dump,也能把 JSON 序列化回去,并修复搜索替换后失效的 s:N 字符串长度。

操作
JSON
值的数量
7
我的工具 →
广告

PHP 用 serialize() 把数组和对象存进数据库,比如 WordPress 的选项和文章元数据、会话、缓存条目,格式形如 a:1:{s:3:"key";s:5:"value";}。这个工具无需运行 PHP 就能读取该格式,并以 JSON 显示,或完全按 print_r()、var_export()、var_dump() 的输出样式显示。它也可以把 JSON 序列化回 PHP 格式,还能修复数据库搜索替换之后失效的 s:N 字符串长度。

使用方法

  1. 粘贴序列化后的字符串,例如来自 WordPress 的某个选项。
  2. 选择显示方式:JSON、print_r、var_export 或 var_dump。
  3. 如果因为文本被替换而导致 PHP 报 "Error at offset",请勾选“修复错误的字符串长度”,检查各个视图,再复制修复后的数据(仅为推测)。
  4. 如需反向转换,选择“序列化 JSON”并粘贴 JSON。

计算公式

N; null · b:1; 布尔 · i:42; 整数 · d:0.5; 浮点数 · s:5:"hello"; 字符串(长度按字节) · a:2:{…} 数组 · O:8:"stdClass":1:{…} 对象 · r:2; 引用

字符串长度是 UTF-8 字节数,所以 "é" 是 s:2,一个 emoji 是 s:4——这正是直接在数据库里替换网址或文本后数据会损坏的常见原因。修复只是推测:对每个出错的字符串,取后面紧跟合法下一项的第一个 "; 作为结尾并重写长度,所以本身含有这类文本的字符串会被过早截断,务必检查结果。private 和 protected 属性会从 \0类名\0属性名 的形式解码。引用(r: 和 R:)会被跟随展开;指向其所含值的引用显示为 *RECURSION*。浮点数按 PHP 8 的方式输出:print_r 中为 14 位有效数字,其他情况为最短的精确形式。

示例

示例 a:4:{…} 含有四个值:name "Ada Lovelace"(s:12)、age 36、langs(内部数组,含 "PHP" 和 "Python")以及 active true;算上数组本身和列表中的两个字符串,共有 7 个值。转成 JSON 为 {"name": "Ada Lovelace", "age": 36, "langs": ["PHP", "Python"], "active": true}。在数据库中把 http:// 替换为 https:// 之后,s:18:"https://example.com" 会少一个字节,修复后会重写为 s:19。

常见问题

为什么 WordPress 数据在搜索替换之后会损坏?

每个字符串都会同时存储字节长度。把 http:// 替换成 https:// 会多出一个字节,长度就对不上了,unserialize() 随之失败。请使用能识别序列化的工具,例如 WP-CLI 的 search-replace。这里对长度的修复只是对已损坏数据的推测,请检查结果并保留备份。

对不可信的数据做反序列化安全吗?

在 PHP 中,对不可信的输入使用 unserialize() 可能创建对象并触发代码执行(对象注入)。本工具只读取文本,从不运行任何类的代码,所以把数据粘贴到这里是安全的。

为什么对象里会显示 "__class"?

JSON 没有类的概念,所以类名被放在额外的 "__class" 键中。print_r、var_export 和 var_dump 则像 PHP 一样显示类。

我的数据会被上传吗?

不会。一切都在浏览器中完成。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). PHP 反序列化 / 序列化 在线工具. https://kakao.mobile/zh/tools/php-unserialize-tool/

MLA

“PHP 反序列化 / 序列化 在线工具.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/php-unserialize-tool/.

广告