is_serialized

Проверяет переданное значение, является ли оно сериализованной строкой.

Если переданное в $data значение не строка, то функция всегда будет возвращать false. Потому что сериализованные данные – это всегда строка.

Не проверяет правильность сериализации, т.е. если сриализованная строка испорчена, то функция все равно определит её как сериализованную строку.

✈ 1 раз = 0.000011с = очень быстро | 50000 раз = 0.04с = скорость света PHP 7.0.8, WP 4.6.1

Хуков нет.

Возвращает

True/false.
true – переданная строка является сериализованными данными.
false – передано что-то не сериализованное.

Использование

is_serialized( $data, $strict );
$data(строка) (обязательный)
Значение, которое нужно проверить, является ли оно сериализованными данными..
$strict(логический)
Точная проверка для конца строки. При true строка всегда должна заканчиваться на символ ; или }.
По умолчанию: true

Примеры

#1 Демонстрация проверки сериализованна ли строка

Допустим, у нас есть сериализоыванная строка из такого массива: array( ‘foo’=>’bar’ );

is_serialized( 'a:1:{s:3:"foo";s:3:"bar";}' ); //> true

// не проверяет правильность сериализации
is_serialized( 'a:1:{s:3:"foo";s:3:"bar";' ); //> true

// не сериализованные данные
is_serialized( 'привет мир' ); //> false

is_serialized( array('foo') ); //> false

Код из


wp-includes/functions.php

WP 4.7.2

<?php
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, '}' );