2015-09-07 31 views
0

这工作 181 -反序列化():错误在偏移的849个字节

$serialized = 'a:23:{s:6:"fields";a:5:{s:21:"display_name_creditor";s:1:"1";s:24:"display_name_constituent";s:1:"1";s:14:"email_creditor";s:1:"1";s:14:"phone_creditor";s:1:"1";s:12:"total_amount";s:1:"1";}s:5:"id_op";s:2:"in";s:8:"id_value";a:0:{}s:21:"receive_date_relative";s:1:"0";s:17:"receive_date_from";s:0:"";s:15:"receive_date_to";s:0:"";s:25:"contribution_status_id_op";s:2:"in";s:28:"contribution_status_id_value";a:1:{i:0;s:1:"1";}s:16:"total_amount_min";s:0:"";s:16:"total_amount_max";s:0:"";s:15:"total_amount_op";s:3:"lte";s:18:"total_amount_value";s:0:"";s:6:"gid_op";s:2:"in";s:9:"gid_value";a:0:{}s:8:"tagid_op";s:2:"in";s:11:"tagid_value";a:0:{}s:11:"description";s:20:"Soft Credit details.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:21:"access CiviContribute";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}'; 

$结果=反序列化($串行化);

这不 -

$serialized = 'a:23:{s:6:"fields";a:5:{s:21:"display_name_creditor";s:1:"1";s:24:"display_name_constituent";s:1:"1";s:14:"email_creditor";s:1:"1";s:14:"phone_creditor";s:1:"1";s:12:"amount";s:1:"1";}s:5:"id_op";s:2:"in";s:8:"id_value";a:0:{}s:21:"receive_date_relative";s:1:"0";s:17:"receive_date_from";s:0:"";s:15:"receive_date_to";s:0:"";s:25:"contribution_status_id_op";s:2:"in";s:28:"contribution_status_id_value";a:1:{i:0;s:1:"1";}s:16:"total_amount_min";s:0:"";s:16:"total_amount_max";s:0:"";s:15:"total_amount_op";s:3:"lte";s:18:"total_amount_value";s:0:"";s:6:"gid_op";s:2:"in";s:9:"gid_value";a:0:{}s:8:"tagid_op";s:2:"in";s:11:"tagid_value";a:0:{}s:11:"description";s:20:"Soft Credit details.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:21:"access CiviContribute";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}' 

我刚换了total_amount领域amount,我收到此错误 -

unserialize(): Error at offset 181 of 849 bytes 

我检查在unserialize() [function.unserialize]: Error at offset &提供的解决方案http://davidwalsh.name/php-serialize-unserialize-issues,但没有任何工作。

使用base64_encode/decode before serialize/unserialize

任何提示也试过?

+2

反序列化工作字符串,重命名数组中的索引并对其进行序列化。如果您不知道自己在做什么,请不要自行更改序列化的字符串。 –

+1

由于一些已知的原因,我们在安装我们的软件之前已经在db中定义了一组序列化的值,其中有一个field_name更改。因此,需要预先编辑这些值,我在这里试着做。 – jitendrapurohit

回答

6

第二个是无效的原因是字段s:12:"amount"指出此值是一个长度为12的字符串。但amount只有6个字节。所以你想使用s:6:"amount"

这是说,它可能更容易unserialize然后作出改变,然后serialize新的价值。

+0

O O - 是吗,让我尝试一下。感谢回复! – jitendrapurohit

+3

@JitendraPurohit是的,一定是它。基本上它意味着'type:length:content',_s_代表字符串。 – DeDee