PHP Velho Oeste 2024

mb_detect_order

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

mb_detect_order Устанавливает/получает порядок определения кодировки символов

Описание

mb_detect_order(array|string|null $encoding = null): array|bool

Устанавливает порядок автоматического определения кодировки символов в значение, переданное в параметр encoding.

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

encoding

Параметр encoding — массив (array) или разделённый запятыми список кодировок символов. Подробнее о существующих в PHP кодировках символов рассказано в разделе «Поддерживаемые кодировки символов».

Если параметр encoding не задан или равен null, функция вернёт текущий порядок определения кодировок символов в виде массива.

Эта настройка влияет на работу функций mb_detect_encoding() и mb_send_mail().

Модуль mbstring содержит следующие фильтры определения кодировок. Если для следующих кодировок существует недопустимая последовательность байтов, определение кодировки завершится неудачно:

UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP

Модуль mbstring определяет кодировку ISO-8859-* как ISO-8859-*.

Определение кодировок UTF-16, UTF-32, UCS2 и UCS4 всегда будет неудачным.

Возвращаемые значения

При установке порядка определения кодировки: возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

При получении порядка определения кодировки: возвращает массив кодировок в установленном порядке.

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

Версия Описание
8.0.0 Теперь параметр encoding может принимать значение null.

Примеры

Пример #1 Пример использования функции mb_detect_order()

<?php
/* Установка порядка определения списком перечисленных кодировок */
mb_detect_order("eucjp-win,sjis-win,UTF-8");

/* Установка порядка определения массивом */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);

/* Отображение текущего порядка обнаружения */
echo implode(", ", mb_detect_order());
?>

Пример #2 Пример бесполезных порядков определения

; Всегда определяет как ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; Всегда определяет как UTF-8, так как ASCII/UTF-7 —
; подмножество UTF-8
detect_order = UTF-8, ASCII, UTF-7

Смотрите также

  • mb_internal_encoding() - Устанавливает/получает внутреннюю кодировку скрипта
  • mb_http_input() - Определяет кодировку символов входных данных HTTP-запроса
  • mb_http_output() - Устанавливает/получает кодировку символов вывода HTTP
  • mb_send_mail() - Отправляет закодированное электронное письмо

add a note

User Contributed Notes 1 note

up
0
Anonymous
9 days ago
Perhaps obvious to most everyone, but the
default filter list was shorter than I expected:
['ASCII','UTF-8'], in that order.

c. 2024, 60% of websites globally declared charset 'UTF-8'
So if you're experimenting with multibyte encodings other than UTF-8, you have to specify your detect_order, choosing from the list of implemented filters.
To Top