Настройка Π²ΠΎ врСмя выполнСния

ПовСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ зависит ΠΎΡ‚ установок Π² Ρ„Π°ΠΉΠ»Π΅ 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
1
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'.
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:

<?php
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"
?>