mb_detect_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_detect_encoding — Визначає кодування символів

Опис

mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false

Визначає найімовірніше кодування символів рядка, переданого в параметр string, перевіряючи список кандидатів у порядку.

Автоматичне визначення передбачуваного кодування символів не є надійним; без додаткової інформації це схоже на розшифрування зашифрованого рядка без ключа. Краще вказати кодування символів, що зберігається або передається з даними, наприклад в HTTP-заголовку Content-Type.

Функція буде корисніша, якщо викликати її з багатобайтовими кодуваннями, оскільки не всі послідовності байтів утворюють допустимий рядок. Якщо вхідний рядок містить таку послідовність, кодування буде відхилено, і буде перевірено наступне кодування.

Список параметрів

string

Перевірений рядок (string).

encodings

Список коду символів для перевірки в заданому порядку. Список може бути визначений як масив рядків або як один рядок, розділений комами.

Якщо параметр encodings не заданий або дорівнює null, буде вибрано кодування, встановлене в директиві з ім'ям detect_order (устанавливают в директивеmbstring.detect_order налаштувань конфігурації або функції mb_detect_order()

strict

Управляет поведением, когда строка в параметреstring неприпустима для жодної перерахованої у параметрі encodings кодування. Якщо параметр strictустановлен в значение**false, буде повернуто перше збіглося кодування; якщо параметр strictустановлен в значениеtrue**, буде повернено значення false

Значение по умолчанию для параметраstrictможно установить в директивеmbstring.strict_detection налаштувань конфігурації.

Значення, що повертаються

Повертає виявлене кодування символів або false, якщо рядок неприпустимий для жодного з перерахованих кодувань.

список змін

ВерсияОпис
8.2.0Функцияmb_detect_encoding() більше не повертатиме наступні нетекстові кодування: «Base64»«QPrint»«UUencode»«HTML entities»«7 bit»и«8 bit»

Приклади

Приклад #1 Приклад використання функції mb_detect_encoding()****

Loading...

Приклад #2 Действие параметраstrict

Loading...

Результат виконання наведеного прикладу:

string(5) "UTF-8"
bool(false)
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"

Іноді та сама послідовність байтів може утворювати допустимий рядок у кількох кодуваннях символів, і неможливо дізнатися, яка інтерпретація передбачалася. Наприклад, серед багатьох інших байтова послідовність\xC4\xA2» може бути:

  • Ä¢ (U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS з наступним U+00A2 CENT SIGN), закодована в одному з кодувань - ISO-8859-1, ISO-8859-15 або Windows-1252
  • "ФЂ" (U+0424 CYRILLIC CAPITAL LETTER EF з наступним U+0402 CYRILLIC CAPITAL LETTER DJE), закодована ISO-8859-5
  • «»» (U+0122 LATIN CAPITAL LETTER G WITH CEDILLA), закодована в UTF-8

Приклад #3 Дія порядку кодувань при збігу кількох кандидатів

Loading...

Результат виконання наведеного прикладу:

string(5) "UTF-8"
string(10) "ISO-8859-1"
string(10) "ISO-8859-5"

Дивіться також

  • mb_detect_order() - Встановлює/отримує порядок визначення кодування символів