函式名稱: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 的自動載入機制,如果類未定義或無法自動載入,則會導致反序列化失敗。
- 為了安全起見,應該僅反序列化可信任的資料,避免反序列化來自不可信任來源的資料,以防止程式碼執行漏洞。