【发布时间】:2015-02-19 18:26:09
【问题描述】:
这是什么字符串?如何反序列化并从中取出数组?
a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}
【问题讨论】:
-
您是在问如何从您的数据库中获取这些数据,还是:php.net/manual/en/function.unserialize.php ?
标签: php string serialization deserialization
这是什么字符串?如何反序列化并从中取出数组?
a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}
【问题讨论】:
标签: php string serialization deserialization
这是一个序列化的字符串。你可以用这个函数反序列化它:unserialize(),像这样:
$str = 'a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}';
print_r(unserialize($str));
输出:
Array ( [0] => Abogado [1] => Notario )
旁注:
引用自手册:
警告: FALSE 在发生错误和反序列化序列化的 FALSE 值时都返回。 可以通过将 str 与 serialize(false) 进行比较或捕捉发出的 E_NOTICE 来捕捉这种特殊情况。
警告: 不要将不受信任的用户输入传递给 unserialize()。 由于对象实例化和自动加载,反序列化可能导致代码被加载和执行,恶意用户可能会利用这一点。如果您需要将序列化数据传递给用户,请使用安全、标准的数据交换格式,例如 JSON(通过 json_decode() 和 json_encode())。
【讨论】:
我用过这个:
$argument = 'a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}';
$arr = unserialize(urldecode($argument));
print_r($arr);
【讨论】:
urldecode() 在这里没有区别。