如何正确序列化和反序列化包含转义字符的字符串?
给定:
$data = "\'test\'";
$out= serialize($data);
print_r($out); // -> s:8:"\'test\'";
这里的问题是,反序列化不接受字符串长度:
$out = 's:8:"\'test\'"';
var_dump(unserialize($out)); // -> bool(false)
但是如果我将字符串长度更改为 6(忽略转义字符):
$out = 's:6:"\'test\'"';
var_dump(unserialize($out)); // -> string(6) "'test'"
它反序列化正确。
处理这个问题的好方法是什么?
最佳答案
我会尝试在序列化数据之前调用 base64_encode()
,然后在反序列化数据之后调用 base64_decode()
。
$data = "\'test\'";
$out= serialize(base64_encode($data));
var_dump(base64_decode(unserialize($out))); // -> bool(false)
关于PHP:序列化和反序列化包含转义字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146570/