Configurația la rulare

Comportamentul acestor funcții este afectat de parametrii stabiliți în php.ini.

Opțiuni de configurare pentru mbstring
Denumire Valoare implicită Poate fi modificată Jurnal al modificărilor
mbstring.language "neutral" PHP_INI_ALL PHP_INI_PERDIR în PHP <= 5.2.6
mbstring.detect_order NULL PHP_INI_ALL  
mbstring.http_input "pass" PHP_INI_ALL Învechită în PHP 5.6.0.
mbstring.http_output "pass" PHP_INI_ALL Învechită în PHP 5.6.0.
mbstring.internal_encoding NULL PHP_INI_ALL Învechită în PHP 5.6.0.
mbstring.script_encoding NULL PHP_INI_ALL Eliminată în PHP 5.4.0. Folosiți în loc zend.script_encoding.
mbstring.substitute_character NULL PHP_INI_ALL  
mbstring.func_overload "0" PHP_INI_SYSTEM PHP_INI_PERDIR în PHP <= 5.2.6. Învechită în PHP 7.2.0.
mbstring.encoding_translation "0" PHP_INI_PERDIR  
mbstring.http_output_conv_mimetypes "^(text/|application/xhtml\+xml)" PHP_INI_ALL Disponibilă începând cu PHP 5.3.0.
mbstring.strict_detection "0" PHP_INI_ALL Disponibilă începând cu PHP 5.1.2.
Pentru mai multe detalii și definiții ale modurilor PHP_INI_* accesați Where a configuration setting may be set.

Iată o explicație pe scurt a directivelor de configurare.

mbstring.language string

Setarea implicită a limbii (NLS) folosită de mbstring. Atenție, această opțiune definește automat mbstring.internal_encoding și mbstring.internal_encoding așa că schimbările acestor setări din urmă trebuie plasate după mbstring.language în php.ini

mbstring.encoding_translation boolean

Activează filtrul automat de codare a caracterelor care efectuează detecția și conversia codării caracterelor din cea folosită în datele HTTP primite în codarea internă a caracterelor.

mbstring.internal_encoding string
Avertizare

Această facilitate a fost ÎNVECHITĂ începând cu PHP 5.6.0. Utilizarea acestei facilități este foarte discurajată.

Definește codarea internă a caracterelor.

Utilizatorii PHP 5.6, sau ulterior, ar trebui să lase această setare vidă și să seteze în loc default_charset.

mbstring.http_input string
Avertizare

Această facilitate a fost ÎNVECHITĂ începând cu PHP 5.6.0. Utilizarea acestei facilități este foarte discurajată.

Definește codarea implicită a caracterelor introduse prin HTTP.

Utilizatorii PHP 5.6, sau ulterior, ar trebui să lase această setare vidă și să seteze în loc default_charset.

mbstring.http_output string
Avertizare

Această facilitate a fost ÎNVECHITĂ începând cu PHP 5.6.0. Utilizarea acestei facilități este foarte discurajată.

Definește codarea implicită a caracterelor trimise prin HTTP către client (caracterele trimise vor fi convertite la transmitere din codarea internă în codarea HTTP).

Utilizatorii PHP 5.6, sau ulterior, ar trebui să lase această setare vidă și să seteze în loc default_charset.

mbstring.detect_order string

Definește ordinea implicită de detecție a codării caracterelor. Vedeți și mb_detect_order().

mbstring.substitute_character string

Definește caracterul de înlocuire pentru caracterele care sunt găsite într-o codare necorespunzătoare. A se vedea mb_substitute_character() pentru valorile susținute.

mbstring.func_overload string
Avertizare

Această facilitate este ÎNVECHITĂ începând cu PHP 7.2.0. Utilizarea acestei facilități este foarte nerecomandată.

Suprascrie un set de funcții pentru stringuri pe un singur octet cu echivalentele din mbstring. Vedeți Suprascrierea funcțiilor pentru mai multe informații.

Această setare poate fi schimbată doar din fișierul php.ini.

mbstring.http_output_conv_mimetypes string

mbstring.strict_detection boolean

Activează detecția strictă a codării.

Conform » specificațiilor HTML 4.01, navigatoarelor web le este permis să codeze un formular completat cu o codare de caractere diferită de cea utilizată de pagină. Vedeți funcția mb_http_input() pentru a detecta codările de caractere utilizate de navigatoare.

Deși navigatoarele cele mai utilizate sunt capabile să intuiască destul de precis codarea caracterelor dintr-un document HTML, ar fi mai bine să setați parametrul charset din antetul HTTP Content-Type la o valoare corespunzătoare folosind funcția header() sau setarea ini default_charset.

Example #1 exemple de setări în php.ini

; Stabilește limba implicită
mbstring.language        = Neutral; Stabilește limba implicită la Neutral(UTF-8) (implicit)
mbstring.language        = English; Stabilește limba implicită la English
mbstring.language        = Japanese; Stabilește limba implicită la Japanese

;; Stabilește codarea internă implicită
;; Notă: Asigurați-vă că folosiți o codare de caractere care funcționează cu PHP
mbstring.internal_encoding    = UTF-8  ; Stabilește codarea internă la UTF-8

;; Conversia codării datelor HTTP este activată.
mbstring.encoding_translation = On

;; Stabilește codarea implicită pentru datele primite prin HTTP
;; Notă: Scripturile nu pot schimba setarea http_input.
mbstring.http_input           = pass    ; Fără conversie
mbstring.http_input           = auto    ; Conversie automată
                                ; „auto” este extins în conformitate cu mbstring.language
mbstring.http_input           = SJIS    ; Stabilește intrările HTTP în SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Specifică ordinea

;; Stabilește codarea implicită pentru datele trimise prin HTTP
mbstring.http_output          = pass    ; Fără conversie
mbstring.http_output          = UTF-8   ; Conversia datelor trimise prin HTTP la UTF-8

;; Stabilește ordinea implicită a detecției codării caracterelor
mbstring.detect_order         = auto    ; Automat
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Specifică ordinea

;; Stabilește caracterul implicit de înlocuire
mbstring.substitute_character = 12307   ; Specifică valoarea Unicode
mbstring.substitute_character = none    ; Nu afișa caracterul
mbstring.substitute_character = long    ; Exemplu lung: U+3000,JIS+7E7E

Example #2 setări în php.ini pentru utilizatorii EUC-JP

;; Dezactivează tamponul de ieșire
output_buffering      = Off

;; Stabilește setul de caractere trimis în antetul HTTP
default_charset       = EUC-JP

;; Stabilește limba implicită la Japanese
mbstring.language = Japanese

;; Conversia codării datelor HTTP este activată.
mbstring.encoding_translation = On

;; Stabilește codarea implicită pentru datele primite prin HTTP la auto
mbstring.http_input   = auto

;; Convertește datele trimise prin HTTP la EUC-JP
mbstring.http_output  = EUC-JP

;; Stabilește codarea internă la EUC-JP
mbstring.internal_encoding = EUC-JP

;; Nu afișa caracterele invalide
mbstring.substitute_character = none

Example #3 setări în php.ini pentru utilizatorii SJIS

;; Activează tamponul de ieșire
output_buffering     = On

;; Stabilește gestionarul de ieșire la mb_output_handler pentru a activa conversia datelor ieșite
output_handler       = mb_output_handler

;; Stabilește setul de caractere folosit în antetele HTTP
default_charset      = Shift_JIS

;; Stabilește limba implicită la Japanese
mbstring.language = Japanese

;; Stabilește codarea implicită pentru datele primite prin HTTP la auto
mbstring.http_input  = auto

;; Convertește la SJIS
mbstring.http_output = SJIS

;; Stabilește codarea internă la EUC-JP
mbstring.internal_encoding = EUC-JP

;; Nu afișa caracterele invalide
mbstring.substitute_character = none

add a note add a note

User Contributed Notes 3 notes

up
1
Hayley Watson
5 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
-1
ASchmidt at Anamera dot net
5 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
-4
PRETTYGIRL NOT COMe
10 years ago
Note that you should better at least set "mbstring.internal_encoding".

Just check as below:

<?php

echo mb_internal_encoding() . '<br />';
echo
mb_regex_encoding();

?>

You might be surprised at unexpected values.

eg.

mbstring.language Japanese
;mbstring.internal_encoding (commented out showing "no value" in phpinfo() )

These two lines in "php.ini" are the same values as

mb_internal_encoding("EUC-JP");
mb_regex_encoding("EUC-JP");

in Win / Linux servers.

"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".
To Top