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