【发布时间】:2014-03-24 14:35:45
【问题描述】:
好吧,我编写了一个返回序列化数据的代码:
a:3:{i:0;s:250:"Sistema Operativo: Windows Vista SP1 / Windows XP SP3
Procesador: Intel Core 2 Duo 1.8 Ghz, AMD Athlon X2 64 2.4 Ghz
Memoria: 1.5GB Windows Vista / 1GB Windows XP
Espacio en Disco: 16GB libres
Gráfica: 256MB NVIDIA 7900 / 256MB ATI X1900";i:1;s:281:"Sistema Operativo: Windows Vista SP1 / Windows XP SP3
MicroProcesador: Intel Core 2 Quad 2.4Ghz, AMD Phenom X3 2.1Ghz
RAM: 2.5GB Windows Vista / 2.5GB Windows XP
Espacio en Disco: 18GB libres
Gráfica: 512 MB NVIDIA 8600 / 512MB ATI 3870
Otros: DVD-ROM de doble capa";i:2;s:0:"";}
但是当我反序列化它时,它只返回 1...
不知道为什么……
我使用$data = (array)unserialize($quote);,但我遇到了一个我不知道如何解决的奇怪问题...... :'(
编辑:
我的序列化变量$finalreq = serialize(array(0 => $minreq, 1 => $req, 2 => $maxreq));$minreq、$req 和$maxreq 是一个$_POST 变量。
已解决:
如果您遇到这种情况,您唯一需要做的就是对 UTF-8 字符使用称为多字节反序列化的特殊功能。
代码:
/**
* Mulit-byte Unserialize
*
* UTF-8 will screw up a serialized string
*
* @access private
* @param string
* @return string
*/
function mb_unserialize($string) {
$string = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $string);
return unserialize($string);
}
原帖:https://stackoverflow.com/a/5813058/3286975
谢谢。
【问题讨论】:
-
你的字符串好吗?我有:
PHP Notice: unserialize(): Error at offset 266 of 551 bytes -
我之前回显过它,它返回给我...但是在该字符串的反序列化时出现任何错误它只返回 1。:(
-
请检查
serialize($your_object);是否与上面的字符串相同。
标签: php arrays serialization