seems_utf8()WP 1.2.1

Проверяет строку, написана ли она в UTF-8 кодировке.

1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.02 сек (скорость света) | PHP 7.2.16, WP 5.2.1

Хуков нет.

Возвращает

true|false. true, если строка в UTF-8 кодировке, в противном случае false.

Использование

if( seems_utf8( $str ) ){
	// utf8
}
$str(строка) (обязательный)
Строка, которую нужно проверить на кодировку.

Примеры

0

#1 Демонстрация работы

$str = 'Text in utf8 encoding';

if( seems_utf8( $str ) )
	echo 'Кодировка UTF-8';
else
	echo 'Не UTF-8 ';

Список изменений

С версии 1.2.1 Введена.

Код seems_utf8() WP 6.8.1

function seems_utf8( $str ) {
	mbstring_binary_safe_encoding();
	$length = strlen( $str );
	reset_mbstring_encoding();

	for ( $i = 0; $i < $length; $i++ ) {
		$c = ord( $str[ $i ] );

		if ( $c < 0x80 ) {
			$n = 0; // 0bbbbbbb
		} elseif ( ( $c & 0xE0 ) === 0xC0 ) {
			$n = 1; // 110bbbbb
		} elseif ( ( $c & 0xF0 ) === 0xE0 ) {
			$n = 2; // 1110bbbb
		} elseif ( ( $c & 0xF8 ) === 0xF0 ) {
			$n = 3; // 11110bbb
		} elseif ( ( $c & 0xFC ) === 0xF8 ) {
			$n = 4; // 111110bb
		} elseif ( ( $c & 0xFE ) === 0xFC ) {
			$n = 5; // 1111110b
		} else {
			return false; // Does not match any model.
		}

		for ( $j = 0; $j < $n; $j++ ) { // n bytes matching 10bbbbbb follow?
			if ( ( ++$i === $length ) || ( ( ord( $str[ $i ] ) & 0xC0 ) !== 0x80 ) ) {
				return false;
			}
		}
	}

	return true;
}