Настройка во время выполнения

Поведение функций зависит от установок в файле php.ini.

Опции конфигурации mbstring
Имя По умолчанию Место изменения Список изменений
mbstring.language "neutral" INI_ALL  
mbstring.detect_order NULL INI_ALL  
mbstring.http_input "pass" INI_ALL Устарела
mbstring.http_output "pass" INI_ALL Устарела
mbstring.internal_encoding NULL INI_ALL Устарела
mbstring.substitute_character NULL INI_ALL  
mbstring.func_overload "0" INI_SYSTEM Объявлено устаревшим в PHP 7.2.0; удалено с PHP 8.0.0.
mbstring.encoding_translation "0" INI_PERDIR  
mbstring.http_output_conv_mimetypes "^(text/|application/xhtml\+xml)" INI_ALL  
mbstring.strict_detection "0" INI_ALL  
mbstring.regex_retry_limit "1000000" INI_ALL Доступно, начиная с PHP 7.4.0.
mbstring.regex_stack_limit "100000" INI_ALL Доступно, начиная с PHP 7.3.5.
Дополнительную информацию и определения режимов INI_* даёт раздел «Места установки параметров конфигурации».

Краткое разъяснение конфигурационных директив.

mbstring.language string

По умолчанию в mbstring используются настройки национального языка. Обратите внимание, что эта опция автоматически определяет mbstring.internal_encoding, и mbstring.internal_encoding должен быть помещён после mbstring.language в php.ini

mbstring.encoding_translation bool

Включает прозрачный фильтр кодировки для входящих запросов HTTP, который выполняет обнаружение и преобразование входной кодировки во внутреннюю кодировку.

mbstring.internal_encoding string
Внимание

Функция устарела и ее удалят в будущем.

Определяет внутреннюю кодировку символов по умолчанию.

Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset.

mbstring.http_input string
Внимание

Функция устарела и ее удалят в будущем.

Определяет кодировку символов по умолчанию для HTTP-ввода.

Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset.

mbstring.http_output string
Внимание

Функция устарела и ее удалят в будущем.

Определяет кодировку символов по умолчанию для HTTP-вывода (конвертация из внутренней кодировки в кодировку HTTP вывода произойдёт перед выводом).

Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset.

mbstring.detect_order string

Определяет порядок определения кодировки символов по умолчанию. Смотрите также mb_detect_order().

mbstring.substitute_character string

Определяет символ для замены недопустимых символов кодировки. Список поддерживаемых значений смотрите в описании функции mb_substitute_character().

mbstring.func_overload string
Внимание

Начиная с PHP 7.2.0 функциональность УСТАРЕЛА, а в PHP 8.0.0 функциональность УДАЛИЛИ. Полагаться на функциональность настоятельно не рекомендуют.

Перегружает множество однобайтовых функций аналогами из mbstring. Смотрите раздел Перегрузка функций для получения дополнительной информации.

Эта опция может быть изменена только в файле php.ini.

mbstring.http_output_conv_mimetypes string

mbstring.strict_detection bool

Включает строгое определение кодировки. Смотрите описание и примеры в mb_detect_encoding().

mbstring.regex_retry_limit int

Ограничивает количество обратных ходов, которые могут быть выполнены во время одного совпадения mbregex.

Эта настройка действует только при связывании с oniguruma >= 6.8.0.

mbstring.regex_stack_limit int

Ограничивает глубину стека регулярных выражений mbstring.

Согласно » спецификации HTML 4.01, веб-браузерам разрешено перекодировать данные из формы, которые они получают в кодировке символов, отличной от используемой на странице. Смотрите функцию mb_http_input() для того, чтобы определить кодировку символов, используемую браузерами.

Хотя популярные браузеры способны достаточно точно определить кодировку символов данного HTML-документа, было бы лучше установить параметр charset в HTTP-заголовке Content-Type соответствующим значением с помощью header() или указать требуемое значение в параметре default_charset в ini-настройках.

Пример #1 Примеры настроек php.ini

; Установить язык по умолчанию
mbstring.language        = Neutral; Установить Neutral(UTF-8) языком по умолчанию (по умолчанию)
mbstring.language        = English; Установить английский языком по умолчанию
mbstring.language        = Japanese; Установить японский языком по умолчанию

;; Установить внутреннюю кодировку по умолчанию
;; Примечание: Убедитесь, что используете кодировку символов, которая работает с PHP
mbstring.internal_encoding    = UTF-8  ; Установить внутреннюю кодировку в UTF-8

;; Включено преобразование кодировки HTTP-ввода.
mbstring.encoding_translation = On

;; Установить кодировку символов по умолчанию для HTTP-ввода
;; Примечание: Скрипт не может изменить установку http_input.
mbstring.http_input           = pass    ; Нет преобразования.
mbstring.http_input           = auto    ; Установить HTTP-ввод в auto
                                ; "auto" расширяется в соответствии с mbstring.language
mbstring.http_input           = SJIS    ; Установить HTTP-ввод в SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Указать порядок

;; Установить кодировку символов по умолчанию для HTTP-вывода
mbstring.http_output          = pass    ; Нет преобразования.
mbstring.http_output          = UTF-8   ; Установить кодировку HTTP-вывода в UTF-8

;; Установить порядок определения кодировки символов по умолчанию
mbstring.detect_order         = auto    ; Установить порядок определения в auto
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Указать порядок

;; Установить символ замены по умолчанию
mbstring.substitute_character = 12307   ; Указать значение Unicode
mbstring.substitute_character = none    ; Не печатать символ
mbstring.substitute_character = long    ; Примеры кодовых значений символов: U+3000,JIS+7E7E

Пример #2 Настройки php.ini для пользователей EUC-JP

;; Отключить буферизацию вывода
output_buffering      = Off

;; Установить кодировку в http-заголовке
default_charset       = EUC-JP

;; Установить японский языком по умолчанию
mbstring.language = Japanese

;; Включено преобразование кодировки HTTP-ввода.
mbstring.encoding_translation = On

;; Установить перекодировку HTTP-ввода в auto
mbstring.http_input   = auto

;; Конвертировать HTTP-вывод в EUC-JP
mbstring.http_output  = EUC-JP

;; Установить внутреннюю кодировку в EUC-JP
mbstring.internal_encoding = EUC-JP

;; Не печатать недопустимые символы
mbstring.substitute_character = none

Пример #3 Настройки php.ini для пользователей SJIS

;; Включить буферизацию вывода
output_buffering     = On

;; Установить mb_output_handler для включения перекодировки вывода
output_handler       = mb_output_handler

;; Установить кодировку в http-заголовке
default_charset      = Shift_JIS

;; Установить японский языком по умолчанию
mbstring.language = Japanese

;; Установить перекодировку HTTP-ввода в auto
mbstring.http_input  = auto

;; Конвертировать в SJIS
mbstring.http_output = SJIS

;; Установить внутреннюю кодировку в EUC-JP
mbstring.internal_encoding = EUC-JP

;; Не печатать недопустимые символы
mbstring.substitute_character = none

Добавить

Примечания пользователей 2 notes

up
0
ASchmidt at Anamera dot net
7 years ago
The documentation is vague, on WHAT precisely the valid "NLS" language strings are that are valid for "mbstring.language".According to http://php.net/manual/en/function.mb-language.php the values are "Japanese", "ja", "English", "en", or "uni" for UTF-8. On the other hand, the sample on this current page omits "uni" but introduces "Neutral" as an undocumented option - which is also the default value:<?phpvar_dump( mb_language() );   // "neutral" (default if not set)var_dump( mb_language( 'uni' ) );    // TRUE, valid language stringvar_dump( mb_language() );    // "uni"var_dump( mb_language( 'neutral' ) );    // TRUE, valid language stringvar_dump( mb_language() );    // "neutral"?>
up
0
Hayley Watson
7 years ago
String literals in the PHP script are encoded with the same encoding that the PHP file was saved with. This is not affected by default_charset or other .ini settings.Scenario: The default_charset is KOI8-R, and there is a text file "input.txt" containing the string "Это текст для поиска." in KOI8-R encoding.A PHP script is written:<?php// mb_internal_encoding('KOI8-R');$string  = 'текст.';$data = file_get_contents('input.txt');echo mb_strpos($data, $string);?>But unfortunately it was saved as UTF-8.It doesn't work; mb_strpos() returns false because it can't find the UTF-8-encoded "текст" inside the KOI8-R-encoded "Это текст для поиска.".Adjusting the default_charset had no effect. Not even fiddling with mb_internal_encoding could fix it, simply because the strings involved had *different* encodings and without actually changing one of them they just weren't going to match.Either re-save the source file as KOI8-R to match the data file, or re-save the data file as UTF-8 to match the source code. Only then will the script properly echo '4'.
To Top