当前位置: 首页 > 面试题库 >

正则表达式/代码来修复损坏的序列化PHP数据。

姜俊民
2023-03-14
问题内容

我有一个庞大的多维数组,已被PHP序列化。它已存储在MySQL中,并且数据字段不够大…末端已被切断…我需要提取数据…
unserialize无法正常工作…有谁知道可以关闭的代码所有数组…重新计算字符串长度…手工处理的数据太多。

非常感谢。


问题答案:

我认为这几乎是不可能的。在修理阵列之前,您需要知道阵列是如何损坏的。有多少孩子失踪?内容是什么?

对不起,恕我直言,你做不到。

证明:

<?php

$serialized = serialize(
    [
        'one'   => 1,
        'two'   => 'nice',
        'three' => 'will be damaged'
    ]
);

var_dump($serialized); // a:3:{s:3:"one";i:1;s:3:"two";s:4:"nice";s:5:"three";s:15:"will be damaged";}

var_dump(unserialize('a:3:{s:3:"one";i:1;s:3:"two";s:4:"nice";s:5:"tee";s:15:"will be damaged";}')); // please note 'tee'

var_dump(unserialize('a:3:{s:3:"one";i:1;s:3:"two";s:4:"nice";s:5:"three";s:')); // serialized string is truncated

链接:https://ideone.com/uvISQu

即使可以重新计算键/值的长度,也不能信任从此源检索到的数据,因为您不能重新计算键/值的值。例如。如果序列化的数据是对象,那么您的属性将不再可用。



 类似资料:
  • 问题内容: 我在网上找到了一个脚本,并且在JavaScript中有一个密码正则表达式。我仍然想使用它,但是为了获得更高的安全性,我也想使用PHP来验证我的密码,但是我对正则表达式毫无用处。 要求: 必须至少8个字符 必须包含至少1个数字 必须至少包含一个大写字符 必须至少包含一个小写字符 如何构造正则表达式字符串以满足这些要求? 问题答案: 我发现在一个大的正则表达式中执行此操作有点像代码维护的噩

  • 问题内容: 我正在修复一些错误的UTF-8编码。我目前正在使用PHP 5和MySQL。 在我的数据库中,我有一些编码错误的实例,例如:ƒ 数据库整理是utf8_general_ci PHP使用的是正确的UTF-8标头 Notepad ++设置为使用不带BOM的UTF-8 数据库管理在phpMyAdmin中处理 并非所有重音符号的情况都被破坏 我需要某种函数来帮助我将ƒ,®,?,?¼和其他类似的实例

  • 昨天我使用Xampp创建了一些简单的基于Web的实用工具。今天我想继续工作,但xampp控制面板给了我一些错误。 这是MySQL错误日志: 已经尝试过修复,但mySQL服务甚至无法启动,所以我有点无助。。。

  • 问题内容: 我正在比较两个字符串列表,以查找可能的匹配项。例: 基本上,对于每个字符串,我都想查看其中是否包含全部或部分包含的字符串。以上代码的输出应为: 但是,在实际情况下,我在测试中有大约225K字符串,而在test2中有大约5K字符串。此比较花费的时间太长,希望查看是否有可能优化比较。分析test2中的前1.5K项大约需要10分钟。因此,至少需要30到40分钟才能完成比较。 提前致谢 问题答

  • 主要内容:实例,实例,实例,实例标记也称为修饰符,正则表达式的标记用于指定额外的匹配策略。 标记不写在正则表达式里,标记位于表达式之外,格式如下: 下表列出了正则表达式常用的修饰符: 修饰符 含义 描述 i ignore - 不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 g global - 全局匹配 查找所有的匹配项。 m multi line - 多行匹配 使边界字符 ^ 和 $ 匹配

  • 我在这个问题上竭尽全力,我已经尝试了许多正则表达式,但似乎还是做不到。(我不是在正则表达式经验丰富)。 下面的情况正在发生,让我们以这个基本句子为例;