这是什么字符串?如何反序列化此字符串?

时间:2015-02-19 18:26:10

标签: php string serialization deserialization

这是什么字符串?我如何反序列化并从中获取数组呢?

a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}

2 个答案:

答案 0 :(得分:5)

这是一个序列化的字符串。您可以使用此函数对其进行反序列化: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())。

答案 1 :(得分:-1)

我用过这个:

$argument = 'a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}';
$arr = unserialize(urldecode($argument));
print_r($arr);