【发布时间】:2016-11-02 17:56:25
【问题描述】:
我有一个大型数据库,其中包含一堆无效的序列化数据。
数据由 PHP 序列化,并且在每种情况下反序列化都失败,其中一个值的字符串长度关闭。
a:2:{s:7:"example";s:14:"This one works";s:11:"example_two";s:50:"This one is broken";}
我想将所有序列化数据导出到 CSV,找到所有损坏的字段并修复或删除它们。
我认为这可以通过正则表达式来完成...对于每一行,找到每个 s:[length],检查下一个冒号后引用的值是否与数字 [length] 的长度相等。如果长度不匹配,则返回整行。
任何帮助将不胜感激。如果您可以提供一个返回带有损坏的序列化数据的行的 mysql 查询,那将是超级奖励。
【问题讨论】:
-
只是好奇除非更新数据库字段以删除字符,否则会发生这种情况?
-
我不知道它是怎么发生的......在几乎所有情况下,数据都与至少 2 年未使用该系统的用户有关。除此之外我什么都不知道。
标签: php mysql regex serialization