Содержание
скрыть
Функция возвращает логическое значение true
или false
.
true
– переданное в неё значение является сериализованным, пусть даже и повторно сериализованным.false
– во всех остальных случаях, и также, если в неё было передано нестроковое значение, например массив.
is_serialized( $data, $strict = true )
Параметры
- $data
- Значение, которое нужно проверить.
- $strict
- (логический) Более строгая проверка данных. Например, если мы удалим из сериализованной строки два последних символа
;}
, то при значении$strict = true
функция уже будет возвращатьfalse
, а при значении параметра$strict = false
всё так жеtrue
.
Примеры
Прежде всего хотел бы наглядно продемонстрировать вам принцип действия функции при помощи var_dump()
.
$data = 'a:2:{s:4:"text";s:21:"Привет, мир!";s:5:"image";s:12:"mountain.jpg";}'; $is_serialized = is_serialized( $data ); var_dump( $is_serialized ); // true // правильность сериализации не проверяется идеально даже при $strict = true $data = 'a:2:{s:4:"text";s:21:"Привет, мир!";s:5:"image";s:12:"mountain.jpg";'; $is_serialized = is_serialized( $data ); var_dump( $is_serialized ); // true // однако более внимательно проверять строку мы всё же можем $data = 'a:2:{s:4:"text";s:21:"Привет, мир!";s:5:"image";s:12:"mountain.jpg"'; $is_serialized = is_serialized( $data ); var_dump( $is_serialized ); // false $is_serialized = is_serialized( $data, false ); var_dump( $is_serialized ); // true // обычная строка $data = 'Привет, мир!'; $is_serialized = is_serialized( $data ); var_dump( $is_serialized ); // false // обычный массив $data = array( 'text' => 'Привет, мир!', 'image' => 'mountain.jpg' ); $is_serialized = is_serialized( $data ); var_dump( $is_serialized ); // false
Но в реальном коде var_dump()
в паре с is_serialized()
конечно же не используется, а используется условие. Например:
$data = ???; // предположим мы получили данные и не знаем, сериализованы они или нет // давайте проверим if ( is_serialized( $data ) ) { // окей, данные оказались сериализованной строкой, структурируем их тогда $data = unserialize( $data ); } // делаем дальше что-то с данными ...
Источник: Блог Миши Рудрастых