如何序列化URL并使其在PHP中仍然可读?

时间:2011-02-07 15:24:32

标签: php serialization

我需要序列化包含URL的数组:

阵列(   'url1'=> 'http://www.example.com',   'url2'=> 'http://www.example1.com' ) 并将其存储在DB中。

当我以标准方式序列化时,它不起作用,因为它包含特殊字符。我找到了使用base64_encode对其进行编码的解决方案。然后它工作,但在DB管理器程序中我无法读取字符串。有没有办法让这个工作没有base64_decode?

3 个答案:

答案 0 :(得分:1)

如果您使用的是PHP 5+,请尝试使用JSON而不是本机PHP序列化程序。 JSON更便携。

但你的问题可能是自动转义报价。如果您能够显示您的输入和示例,将会很有帮助。输出到DB的输出。

答案 1 :(得分:1)

  1. 当您尝试将序列化数据存储在关系数据库中时,应始终设置红色标记。规范化您的架构,这样您就不必序列化。
  2. 以差的格式存储您的数据,以便在数据库中可读时不是一个好主意。您希望以对数据库系统最有效的格式存储它,然后在您准备好显示时更新您的管理器以对其进行反序列化。
  3. json_encode目前很受欢迎,有助于提升数据的便携性。

答案 2 :(得分:0)

没有理由为什么序列化不应该在这个例子上工作,所以它可能更多地与SQL查询中的输入进行充分的转义,而不是你正在进行的序列化问题。如果您正在使用MySQL,请尝试通过mysql_real_escape_string()运行序列化数据,然后再将其连接到SQL语句中。

另外,我倾向于选择json_encode()来将值序列化到数据库字段,因为序列化往往会产生很难手动读取的序列化数据,并且极难编辑。