【问题标题】:What kind of string is this? How do I unserialize this string? [duplicate]这是什么弦?如何反序列化这个字符串? [复制]
【发布时间】:2015-02-19 18:26:09
【问题描述】:

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

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

【问题讨论】:

标签: php string serialization deserialization


【解决方案1】:

这是一个序列化的字符串。你可以用这个函数反序列化它: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())。

【讨论】:

    【解决方案2】:

    我用过这个:

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

    【讨论】:

    • urldecode() 在这里没有区别。
    猜你喜欢
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2021-02-13
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多