mb_regex_encoding
The encoding parameter is the character encoding. If it is omitted or null , the internal character encoding value will be used.
Return Values
If encoding is set, then Returns true on success or false on failure. In this case, the internal character encoding is NOT changed. If encoding is omitted, then the current character encoding name for a multibyte regex is returned.
Changelog
Version | Description |
---|---|
8.0.0 | encoding is nullable now. |
See Also
- mb_internal_encoding() — Set/Get internal character encoding
- mb_ereg() — Regular expression match with multibyte support
User Contributed Notes 5 notes
Beware, mb_regex_encoding does not support the same set of encodings as listed in mb_list_encodings.php
mb_internal_encoding ( ‘CP936’ );
mb_regex_encoding ( ‘CP936’ ); # this line produces an error
?>
mb_ereg functionality is provided via Oniguruma RegEx library and not via PCRE. mb_regex_encoding() does only support a subset of encoding names, compared to mb_list_encodings() and mb_encoding_aliases().
Currently the following names are supported (case-insensitive):
The list is a mixture of base names and aliases and applies to PHP 5.4.45 (Oniguruma lib v4.7.1), PHP 5.6.31 (v5.9.5), PHP 7.0.22 (v5.9.6) and PHP 7.1.8 (v5.9.6). Be aware of the inconsistency: mb_regex_encoding() accepts for example the base name ‘UTF-8’ and its only alias ‘utf8’, but it does not accept aliases ‘utf16’, ‘utf32’ or ‘latin1’.
Additionally note, that the informal name/alias ‘latin9’ for ISO/IEC 8859-15:1999 (including the Euro sign on 0xA4) is also not known by mb_list_encodings(). It can only be adressed as ‘ISO-8859-15’ or ‘ISO_8859-15’ and for mb_regex_encoding() solely as ‘ISO-8859-15’.
mb_regex_encoding does not recognize CP1252 or Windows-1252 as valid encodings, although they are in the list generated by mb_list_encodings.
ISO-8859-1 (AKA «Latin-1») is supported, but it’s not the same as the Windows variety of Latin-1.
To change algo the regex_encodign
echo «current mb_internal_encoding: » . mb_internal_encoding (). «
» ;
echo «changing mb_internal_encoding to UTF-8
» ;
mb_internal_encoding ( «UTF-8» );
echo «new mb_internal_encoding: » . mb_internal_encoding (). «
» ;
echo «current mb_regex_encoding: » . mb_regex_encoding (). «
» ;
echo «changing mb_regex_encoding to UTF-8
» ;
mb_regex_encoding ( ‘UTF-8’ );
echo «new mb_regex_encoding: » . mb_regex_encoding (). «
» ;
?>
Return values vary in setting and getting:
echo mb_regex_encoding ();
// returns encoding name as a string
?>
echo mb_regex_encoding ( «UTF-8» );
// returns true (success) of false as a boolean
?>
- Multibyte String Functions
- mb_check_encoding
- mb_chr
- mb_convert_case
- mb_convert_encoding
- mb_convert_kana
- mb_convert_variables
- mb_decode_mimeheader
- mb_decode_numericentity
- mb_detect_encoding
- mb_detect_order
- mb_encode_mimeheader
- mb_encode_numericentity
- mb_encoding_aliases
- mb_ereg_match
- mb_ereg_replace_callback
- mb_ereg_replace
- mb_ereg_search_getpos
- mb_ereg_search_getregs
- mb_ereg_search_init
- mb_ereg_search_pos
- mb_ereg_search_regs
- mb_ereg_search_setpos
- mb_ereg_search
- mb_ereg
- mb_eregi_replace
- mb_eregi
- mb_get_info
- mb_http_input
- mb_http_output
- mb_internal_encoding
- mb_language
- mb_list_encodings
- mb_ord
- mb_output_handler
- mb_parse_str
- mb_preferred_mime_name
- mb_regex_encoding
- mb_regex_set_options
- mb_scrub
- mb_send_mail
- mb_split
- mb_str_split
- mb_strcut
- mb_strimwidth
- mb_stripos
- mb_stristr
- mb_strlen
- mb_strpos
- mb_strrchr
- mb_strrichr
- mb_strripos
- mb_strrpos
- mb_strstr
- mb_strtolower
- mb_strtoupper
- mb_strwidth
- mb_substitute_character
- mb_substr_count
- mb_substr
Mb regex encoding php
Поведение этих функций зависит от установок в php.ini .
Опции конфигурации mbstring
Имя По умолчанию Место изменения Список изменений mbstring.language «neutral» PHP_INI_ALL mbstring.detect_order NULL PHP_INI_ALL mbstring.http_input «pass» PHP_INI_ALL Устарела mbstring.http_output «pass» PHP_INI_ALL Устарела mbstring.internal_encoding NULL PHP_INI_ALL Устарела mbstring.substitute_character NULL PHP_INI_ALL mbstring.func_overload «0» PHP_INI_SYSTEM Объявлено устаревшим в PHP 7.2.0; удалено с PHP 8.0.0. mbstring.encoding_translation «0» PHP_INI_PERDIR mbstring.http_output_conv_mimetypes «^(text/|application/xhtml\+xml)» PHP_INI_ALL mbstring.strict_detection «0» PHP_INI_ALL mbstring.regex_retry_limit «1000000» PHP_INI_ALL Доступно, начиная с PHP 7.4.0. mbstring.regex_stack_limit «100000» PHP_INI_ALL Доступно, начиная с PHP 7.3.5. Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
По умолчанию в mbstring используются настройки национального языка. Обратите внимание, что эта опция автоматически определяет mbstring.internal_encoding , и mbstring.internal_encoding должен быть помещён после mbstring.language в php.ini
Включает прозрачный фильтр кодировки для входящих запросов HTTP, который выполняет обнаружение и преобразование входной кодировки во внутреннюю кодировку.
Эта возможность устарела и будет обязательно удалена в будущем.
Определяет внутреннюю кодировку символов по умолчанию.
Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset .
Эта возможность устарела и будет обязательно удалена в будущем.
Определяет кодировку символов по умолчанию для HTTP-ввода.
Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset .
Эта возможность устарела и будет обязательно удалена в будущем.
Определяет кодировку символов по умолчанию для HTTP-вывода (конвертация из внутренней кодировки в кодировку HTTP вывода произойдёт перед выводом).
Пользователи должны оставить эту опцию пустой и задать вместо неё default_charset .
Определяет порядок определения кодировки символов по умолчанию. Смотрите также mb_detect_order() .
Определяет символ для замены недопустимых символов кодировки. Список поддерживаемых значений смотрите в описании функции mb_substitute_character() .
Данная функциональность объявлена УСТАРЕВШЕЙ, начиная с PHP 7.2.0 и была УДАЛЕНА в версии PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.
Перегружает множество однобайтовых функций аналогами из mbstring. Смотрите раздел Перегрузка функций для получения дополнительной информации.
Эта опция может быть изменена только в файле php.ini .
Включает строгое определение кодировки. Смотрите описание и примеры в mb_detect_encoding() .
Ограничивает количество обратных ходов, которые могут быть выполнены во время одного совпадения mbregex.
Эта настройка действует только при связывании с oniguruma >= 6.8.0.
Ограничивает глубину стека регулярных выражений 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
User Contributed Notes 3 notes
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.
$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’.
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:var_dump ( mb_language () ); // «neutral» (default if not set)
var_dump ( mb_language ( ‘uni’ ) ); // TRUE, valid language string
var_dump ( mb_language () ); // «uni»
var_dump ( mb_language ( ‘neutral’ ) ); // TRUE, valid language string
var_dump ( mb_language () ); // «neutral»
?>Note that you should better at least set «mbstring.internal_encoding».
echo mb_internal_encoding () . ‘
‘ ;
echo mb_regex_encoding ();?>
You might be surprised at unexpected values.
mbstring.language Japanese
;mbstring.internal_encoding (commented out showing «no value» in phpinfo() )These two lines in «php.ini» are the same values as
«mbstring.internal_encoding» defines the default encoding for «mb_» Functions such as «mb_strlen()».
It also defines the same for «mb_ereg_» Functions such as «mb_ereg()» when you don’t set «mb_regex_encoding».