不能反序列化在PHP中的字符串

是的我知道。 我看到很多关于它的问题。

但是,没有人对我的作品,直到现在。

我对谁使用存储一些自定义字段序列化数据WordPress的博客中。 它的伟大工程,但是当我移动所有的博客到另一个文件夹,从WordPress的所有序列化的数据内[114](但它剧照在数据库中)所以,WordPress的不检测它。

现在...我的代码figthing知道为什么不工作。 在结束...我只是鑫卡特,好了,我该怎么做代码获取序列化的数据,也将努力。

现在,我输了,我有这样的:

$data = 'a:7:{s:4:"zoom";s:2:"18";s:8:"latitude";s:8:"41.37233";s:9:"longitude";s:7:"1.04283";s:11:"address_one";s:16:"Finca Riudabella";s:11:"address_two";s:33:" s/n - 43430 Vimbodí (Tarragona)";s:3:"pin";s:77:"http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png";s:6:"bg_img";s:0:"";}'; $data = "a:7:{s:4:1}"; $data = trim($data); var_dump($data); var_dump(unserialize($data));

我试图从数据库中原来的序列化的字符串(最前一页线),并返回虚假和错误。 我做了一个有点简单,说的一样。

我的错误是:

Notice: unserialize() [function.unserialize]: Error at offset 5 of 11 bytes in C:\xampp\htdocs\unser.php on line 6 bool(false)

所以,我不知道为什么我不能得到字符串数据!

我想这个工具http://unserialize.net/serialize和我的数据只是工作的预期:\我需要做点别的?

--------------解决方案-------------

$broken_data = 'a:7:{s:4:"zoom";s:2:"18";s:8:"latitude";s:8:"41.37233";s:9:"longitude";s:7:"1.04283";s:11:"address_one";s:16:"Finca Riudabella";s:11:"address_two";s:33:" s/n - 43430 Vimbodí (Tarragona)";s:3:"pin";s:77:"http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png";s:6:"bg_img";s:0:"";}';
$data = serialize(
array(
"zoom" => "18",
"latitude" => "41.37233",
"longitude" => "1.04283",
"address_one"=>"Finca Riudabella",
"address_two"=>" s/n - 43430 Vimbodí (Tarragona)",
"pin"=>"http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png",
"bg_img"=> ""
)
);
// The right data
var_dump($data);
// Your data.
var_dump($broken_data);
var_dump(unserialize($data));

正如你所看到的序列化$data是正确的。
序列化$broken_data似乎都在“销”不正确的字符串长度。
$broken_data它说成是77个字符(S:77),但在现实中,它是67个字符长(S:67)

你两次分配的数据。

第一项任务

$data = 'a:7:{s:4:"zoom";s:2:"18";s:8:"latitude";s:8:"41.37233";s:9:"longitude";s:7:"1.04283";s:11:"address_one";s:16:"Finca Riudabella";s:11:"address_two";s:33:" s/n - 43430 Vimbodí (Tarragona)";s:3:"pin";s:67:"http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png";s:6:"bg_img";s:0:"";}';

它没有在这个: s:77:"http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png";但正如你可能提供的URL的长度发现是67 ,当您手动将其更改为67,与使用: var_dump( unserialize( $data));你会得到这样的:

array(7) {
["zoom"]=>
string(2) "18"
["latitude"]=>
string(8) "41.37233"
["longitude"]=>
string(7) "1.04283"
["address_one"]=>
string(16) "Finca Riudabella"
["address_two"]=>
string(33) " s/n - 43430 Vimbodí (Tarragona)"
["pin"]=>
string(67) "http://espaciosparaeventos.es/wp-content/uploads/2012/02/fincas.png"
["bg_img"]=>
string(0) ""
}

它是怎么改变? 不知道,那里似乎我不被特殊字符,也许类实现Serializable提供了错误的字符串长度的URL。

第二次分配

$data = "a:7:{s:4:1}";

这是错误的,宣称用7个项目阵列,提供只有一个...而且,一个是应该有长度为4(字符串"str1"而是只提供1 ...这只是不应该也无法工作。

分类:php 时间:2015-03-16 人气:1
本文关键词: PHP,系列化,WordPress的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.422 (s). 10 q(s)