ConFoo 2025

Configurações em Execução

O comportamento destas funções é afetado pelas configurações do php.ini.

Opções de configuração do mbstring
Nome Padrão Modificável Registro de Alterações
mbstring.language "neutral" INI_ALL  
mbstring.detect_order NULL INI_ALL  
mbstring.http_input "pass" INI_ALL Descontinuado
mbstring.http_output "pass" INI_ALL Descontinuado
mbstring.internal_encoding NULL INI_ALL Descontinuado
mbstring.substitute_character NULL INI_ALL  
mbstring.func_overload "0" INI_SYSTEM Descontinuado a partir do PHP 7.2.0; removido a partir do 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 Disponível a partir do PHP 7.4.0.
mbstring.regex_stack_limit "100000" INI_ALL Disponível a partir do PHP 7.3.5.
Para mais detalhes e definições dos modos INI_*, consulte os Onde uma configuração deve ser definida.

Aqui está uma breve explicação das diretivas de configuração.

mbstring.language string

A configuração padrão do idioma nacional (NLS) usada no mbstring. Note que esta opção define automaticamente mbstring.internal_encoding e mbstring.internal_encoding deve ser colocada após mbstring.language no php.ini

mbstring.encoding_translation bool

Ativa o filtro de codificação de caracteres transparente para as consultas HTTP de entrada, que realiza a detecção e conversão da codificação de entrada para a codificação de caracteres interna.

mbstring.internal_encoding string
Aviso

Este recurso defasado certamente será removido no futuro.

Define a codificação de caracteres interna padrão.

Os usuários devem deixar isso vazio e definir default_charset em vez disso.

mbstring.http_input string
Aviso

Este recurso defasado certamente será removido no futuro.

Define a codificação de caracteres de entrada HTTP padrão.

Os usuários devem deixar isso vazio e definir default_charset em vez disso.

mbstring.http_output string
Aviso

Este recurso defasado certamente será removido no futuro.

Define a codificação de caracteres de saída HTTP padrão (a saída será convertida da codificação interna para a codificação de saída HTTP na saída).

Os usuários devem deixar isso vazio e definir default_charset em vez disso.

mbstring.detect_order string

Define a ordem padrão de detecção de código de caracteres. Veja também mb_detect_order().

mbstring.substitute_character string

Define o caractere a ser substituído por codificação de caracteres inválida. Veja mb_substitute_character() para os valores suportados.

mbstring.func_overload string
Aviso

Este recurso tornou-se DEFASADO a partir do PHP 7.2.0 e foi REMOVIDO a partir do PHP 8.0.0. O uso deste recurso é fortemente desencorajado.

Sobrecarrega um conjunto de funções de byte único pelas contrapartes do mbstring. Veja Sobrecarga de Funções para mais informações.

Esta configuração só pode ser alterada no arquivo php.ini.

mbstring.http_output_conv_mimetypes string

mbstring.strict_detection bool

Ativa a detecção estrita de codificação. Veja mb_detect_encoding() para uma descrição e exemplos.

mbstring.regex_retry_limit int

Limita a quantidade de retrocesso que pode ser executada durante uma correspondência de mbregex.

Esta configuração só tem efeito ao vincular contra oniguruma >= 6.8.0.

mbstring.regex_stack_limit int

Limita a profundidade da pilha de expressões regulares mbstring.

De acordo com a » especificação HTML 4.01, os navegadores da web podem codificar um formulário sendo enviado com uma codificação de caracteres diferente da usada para a página. Veja mb_http_input() para detectar a codificação de caracteres usada pelos navegadores.

Embora os navegadores populares sejam capazes de fazer uma suposição razoavelmente precisa sobre a codificação de caracteres de um documento HTML específico, seria melhor definir o parâmetro charset no cabeçalho HTTP Content-Type para o valor apropriado usando a função header() ou a configuração ini default_charset.

Exemplo #1 Exemplos de configuração do php.ini

; Define idioma padrão
mbstring.language        = Neutral; Define o idioma padrão como neutro (UTF-8) (padrão)
mbstring.language        = English; Define o idioma padrão para inglês
mbstring.language        = Japanese; Define o idioma padrão para japonês

;; Define a codificação interna padrão
;; Nota: Certifique-se de usar a codificação de caracteres que funciona com PHP
mbstring.internal_encoding    = UTF-8  ; Define a codificação interna para UTF-8

;; A tradução da codificação de entrada HTTP está habilitada.
mbstring.encoding_translation = On

;; Define a codificação de caracteres de entrada HTTP padrão
;; Nota: O script não pode alterar a configuração http_input.
mbstring.http_input           = pass    ; Sem conversão.
mbstring.http_input           = auto    ; Define a entrada HTTP como automática
                                ; "auto" é expandido de acordo com mbstring.language
mbstring.http_input           = SJIS    ; Define a entrada HTTP para SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Especifica a ordenação

;; Define a codificação de caracteres de saída HTTP padrão
mbstring.http_output          = pass    ; Sem conversão
mbstring.http_output          = UTF-8   ; Define a codificação de saída HTTP para UTF-8

;; Define a ordem de detecção de codificação de caracteres padrão
mbstring.detect_order         = auto    ; Define a ordem de detecção como automática
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Especifica o pedido

;; Define o caractere substituto padrão
mbstring.substitute_character = 12307   ; Especifica o valor Unicode
mbstring.substitute_character = none    ; Não imprime caractere
mbstring.substitute_character = long    ; Exemplo longo: U+3000,JIS+7E7E

Exemplo #2 php.ini configuração para usuários EUC-JP

;; Desativa buffer de saída
output_buffering      = Off

;; Define conjunto de caracteres do cabeçalho HTTP
default_charset       = EUC-JP

;; Define o idioma padrão para japonês
mbstring.language = Japanese

;; A tradução da codificação de entrada HTTP está habilitada
mbstring.encoding_translation = On

;; Define a conversão de codificação de entrada HTTP como automática
mbstring.http_input   = auto

;; Converte saída HTTP para EUC-JP
mbstring.http_output  = EUC-JP

;; Define a codificação interna para EUC-JP
mbstring.internal_encoding = EUC-JP

;; Não imprime caracteres inválidos
mbstring.substitute_character = none

Exemplo #3 php.ini configuração para usuários SJIS

;; Habilita buffer de saída
output_buffering     = On

;; Define mb_output_handler para ativar a conversão de saída
output_handler       = mb_output_handler

;; Define o conjunto de caracteres do cabeçalho HTTP
default_charset      = Shift_JIS

;; Define o idioma padrão para japonês
mbstring.language = Japanese

;; Define a conversão de codificação de entrada http como automática
mbstring.http_input  = auto

;; Converte para SJIS
mbstring.http_output = SJIS

;; Define a codificação interna para EUC-JP
mbstring.internal_encoding = EUC-JP

;; Não imprime caracteres inválidos
mbstring.substitute_character = none

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
0
ASchmidt at Anamera dot net
6 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"
?>
up
0
Hayley Watson
6 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