Paramètres

$data(string)requis

Valeur à vérifier.

$strict(bool)optionnel

Pour être stricte sur la fin de la chaîne.

Valeur par défaut : true

Description / Informations supplémentaires

Si $data n'est pas une chaîne, la valeur retournée sera false. Une valeur sérializée est toujours une chaîne.

Retourne

(bool) False si non sérializée, true sinon.

Déclaration et structure de la fonction is_serialized()

function is_serialized( $data, $strict = true ) {
    // If it isn't a string, it isn't serialized.
    if ( ! is_string( $data ) ) {
        return false;
    }
    $data = trim( $data );
    if ( 'N;' === $data ) {
        return true;
    }
    if ( strlen( $data ) < 4 ) {
        return false;
    }
    if ( ':' !== $data[1] ) {
        return false;
    }
    if ( $strict ) {
        $lastc = substr( $data, -1 );
        if ( ';' !== $lastc && '}' !== $lastc ) {
            return false;
        }
    } else {
        $semicolon = strpos( $data, ';' );
        $brace     = strpos( $data, '}' );
        // Either ; or } must exist.
        if ( false === $semicolon && false === $brace ) {
            return false;
        }
        // But neither must be in the first X characters.
        if ( false !== $semicolon && $semicolon < 3 ) {
            return false;
        }
        if ( false !== $brace && $brace < 4 ) {
            return false;
        }
    }
    $token = $data[0];
    switch ( $token ) {
        case 's':
            if ( $strict ) {
                if ( '"' !== substr( $data, -2, 1 ) ) {
                    return false;
                }
            } elseif ( ! str_contains( $data, '"' ) ) {
                return false;
            }
            // Or else fall through.
        case 'a':
        case 'O':
        case 'E':
            return (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );
        case 'b':
        case 'i':
        case 'd':
            $end = $strict ? '$' : '';
            return (bool) preg_match( "/^{$token}:[0-9.E+-]+;$end/", $data );
    }
    return false;
}

Où est utilisée la fonction is_serialized() dans le CMS WordPress

Exemple

if( ! is_serialized( $data ) ){
    serialize($data);
}

Sources

Codex WordPress : is_serialized()

Autres fonctions dans le même fichier : wp-includes/functions.php

Retour