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() - Встановлює/отримує порядок визначення кодування символів