函数名称:unserialize()
适用版本:PHP 4, PHP 5, PHP 7
函数描述:unserialize() 函数将存储在字符串中的 PHP 表示形式转换回 PHP 的值。
语法:mixed unserialize ( string $str [, array $options ] )
参数:
- $str:必需,要反序列化的字符串。
- $options:可选,一个关联数组,用于指定反序列化过程的选项。目前支持的选项有:
- 'allowed_classes':指定允许反序列化的类的白名单。默认情况下,所有类都是允许的。
- 'object_to_array':将对象转换为数组。默认情况下,对象将被还原为它们的原始类。
返回值:反序列化后的值,如果反序列化失败则返回 false。
示例:
// 反序列化字符串
$data = 'a:2:{i:0;s:5:"apple";i:1;s:6:"orange";}';
$result = unserialize($data);
var_dump($result);
// 输出:array(2) { [0]=> string(5) "apple" [1]=> string(6) "orange" }
// 反序列化对象
class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$data = 'O:5:"Fruit":1:{s:4:"name";s:5:"apple";}';
$result = unserialize($data);
var_dump($result);
// 输出:object(Fruit)#1 (1) { ["name"]=> string(5) "apple" }
注意事项:
- unserialize() 函数在反序列化时可能会触发 PHP 的自动加载机制,如果类未定义或无法自动加载,则会导致反序列化失败。
- 为了安全起见,应该仅反序列化可信任的数据,避免反序列化来自不可信任来源的数据,以防止代码执行漏洞。