is_serialized_string()
Проверяет строка ли сериализована в указанной сериализованной строке. Т.е. была ли сериализована строка (а не массив или число).
Не надо путать эту функцию с аналогичной is_serialized(), которая проверяет являются ли переданная строка любыми сериализоваными данными. А эта функция проверяет что сериализована именно строка.
1 раз — 0.000039 сек (очень быстро) | 50000 раз — 0.03 сек (скорость света) | PHP 7.0.8, WP 4.6.1
Хуков нет.
Возвращает
true|false.
false- это не сериализованная строка.true- это сериализованные данные и в них находится строка.
Использование
is_serialized_string( $data );
- $data(строка) (обязательный)
- Сериализованные данные.
Примеры
#1 Демонстрация проверки сериализованной строки.
// сериализованный массив
is_serialized_string( 'a:1:{s:3:"foo";s:3:"bar";}' ); //> false
// сериализованная строка - serialize( 'foo' )
is_serialized_string( 's:3:"foo";' ); //> true #2 Эту функцию принято использовать в связке с is_serialized()
Допустим в $option могут быть сериализованные данные и всякие массивы, булены числа и т.д.
// Если это сериализованные данные
if ( is_serialized( $option ) ) {
// если в сериал. данных находится только строка
if ( is_serialized_string( $option ) ) {
echo esc_html( unserialize( $option ) );
}
// в сериализованных данных находится что-то отличное от строки
else {
echo 'SERIALIZED DATA';
}
}
Список изменений
| С версии 2.0.5 | Введена. |
Код is_serialized_string() is serialized string WP 7.0.2
function is_serialized_string( $data ) {
// if it isn't a string, it isn't a serialized string.
if ( ! is_string( $data ) ) {
return false;
}
$data = trim( $data );
if ( strlen( $data ) < 4 ) {
return false;
} elseif ( ':' !== $data[1] ) {
return false;
} elseif ( ! str_ends_with( $data, ';' ) ) {
return false;
} elseif ( 's' !== $data[0] ) {
return false;
} elseif ( '"' !== substr( $data, -2, 1 ) ) {
return false;
} else {
return true;
}
}