我需要序列数组,它包含的URL:如何序列化URL并使其在PHP中仍然可读?
阵列( 'URL1'=> 'http://www.example.com', 'URL2'=>的“http://www.example1。 com' ) 并将其存储在数据库中。
当我序列化它的标准方式,它不工作,因为它包含特殊字符。我发现解决方案使用base64_encode进行编码。然后它可以工作,但在DB管理器程序中字符串不可读。有没有办法让这个工作没有base64_decode?
我需要序列数组,它包含的URL:如何序列化URL并使其在PHP中仍然可读?
阵列( 'URL1'=> 'http://www.example.com', 'URL2'=>的“http://www.example1。 com' ) 并将其存储在数据库中。
当我序列化它的标准方式,它不工作,因为它包含特殊字符。我发现解决方案使用base64_encode进行编码。然后它可以工作,但在DB管理器程序中字符串不可读。有没有办法让这个工作没有base64_decode?
json_encode
这些日子很流行,并有助于使您的数据便携。如果您使用PHP 5+,请尝试使用JSON而不是本地PHP序列化程序。 JSON更便携。
但是你的问题可能是自动转义引号。如果您可以向数据库显示输入&输出的示例,那将会很有帮助。
没有理由为什么serialize不能在这个例子中工作,所以它可能更多的是在你的SQL查询中充分转义输入,而不是你正在做的序列化的问题。如果您使用的是MySQL,那么在将它连接到SQL语句之前,请尝试通过mysql_real_escape_string()运行序列化的数据。我倾向于使用json_encode()来将值序列化到数据库字段,因为serialise往往会产生非常难以手动读取的序列化数据,并且极难编辑。
请更具体一点:怎么*确实*“它不工作”?这是非常重要的。 – Piskvor 2011-02-07 15:26:47
`json_encode`可能是另一种选择..但我不明白为什么`serialize()`首先会使URL不可读。你能举个例子吗? – 2011-02-07 15:27:03
您的问题很可能来自引号/双引号PHP(和JSON)序列化机制使用。这使我相信,在将数据插入数据库时(例如:使用`mysql_real_escape_string`,PDO或等效数据),您不会正确地转义数据。 – netcoder 2011-02-07 15:28:52