is_serialized_string() WP 2.0.5

Перевіряє рядок чи серіалізована у зазначеному серіалізованому рядку. Тобто. чи була серіалізована рядок (а чи не масив чи число).

Не треба плутати цю функцію з аналогічною 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
(рядок) (обов’язковий)
Серіалізовані дані.

Приклади

0

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

// серіалізований масив
is_serialized_string( 'a:1:{s:3:"foo";s:3:"bar";}' ); //> false

// серіалізований рядок - serialize ( 'foo')
is_serialized_string( 's:3:"foo";' ); //> true
0

#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() WP 6.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 ( ';' !== substr( $data, -1 ) ) {
		return false;
	} elseif ( 's' !== $data[0] ) {
		return false;
	} elseif ( '"' !== substr( $data, -2, 1 ) ) {
		return false;
	} else {
		return true;
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *