function Unserialize::unserialize

Parameters

string $serialized Serialized data:

array $options Associative array containing options:

Return value

mixed

See also

https://secure.php.net/manual/en/function.unserialize.php

1 call to Unserialize::unserialize()
Manifest::deserializeMetaData in misc/typo3/phar-stream-wrapper/src/Phar/Manifest.php

File

misc/brumann/polyfill-unserialize/src/Unserialize.php, line 15

Class

Unserialize

Namespace

Brumann\Polyfill

Code

public static function unserialize($serialized, array $options = array()) {
    if (PHP_VERSION_ID >= 70000) {
        return \unserialize($serialized, $options);
    }
    if (!array_key_exists('allowed_classes', $options)) {
        $options['allowed_classes'] = true;
    }
    $allowedClasses = $options['allowed_classes'];
    if (true === $allowedClasses) {
        return \unserialize($serialized);
    }
    if (false === $allowedClasses) {
        $allowedClasses = array();
    }
    if (!is_array($allowedClasses)) {
        trigger_error('unserialize(): allowed_classes option should be array or boolean', E_USER_WARNING);
        $allowedClasses = array();
    }
    $sanitizedSerialized = preg_replace_callback('/(^|;)O:\\d+:"([^"]*)":(\\d+):{/', function ($match) use ($allowedClasses) {
        list($completeMatch, $leftBorder, $className, $objectSize) = $match;
        if (in_array($className, $allowedClasses)) {
            return $completeMatch;
        }
        else {
            return sprintf('%sO:22:"__PHP_Incomplete_Class":%d:{s:27:"__PHP_Incomplete_Class_Name";%s', $leftBorder, $objectSize + 1, \serialize($className));
        }
    }, $serialized);
    return \unserialize($sanitizedSerialized);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.