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 6.8.1
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; } }