这是哪种字符串?如何取消它的序列化并从中取出数组?
a:2:{i:0;s:7:"Abogado";i:1;s:7:"Notario";}
这是一个序列化的字符串。您可以使用以下函数取消序列化: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);