is_serialized( string $data, bool $strict = true )
Vérifie si une valeur a été sérializée.
Paramètres
$data(string)requisValeur à vérifier.
$strict(bool)optionnelPour ê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()
is_serialized() est déclarée dans le fichier wp-includes/functions.php à la ligne 669 :
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