PHP Conference Nagoya 2025

Çalışma Anı Yapılandırması

Bu işlevlerin davranışı php.ini içindeki ayarlardan etkilenir.

mbstring yapılandırma yönergeleri
İsim Öntanımlı Değişlik Yeri Sürüm Bilgisi
mbstring.language "neutral" INI_ALL  
mbstring.detect_order NULL INI_ALL  
mbstring.http_input "pass" INI_ALL Kullanımı önerilmemektedir.
mbstring.http_output "pass" INI_ALL Kullanımı önerilmemektedir.
mbstring.internal_encoding NULL INI_ALL Kullanımı önerilmemektedir.
mbstring.script_encoding NULL INI_ALL PHP 5.0.0'da kaldırıldı. Yarine zend.script_encoding kullanın.
mbstring.substitute_character NULL INI_ALL  
mbstring.func_overload "0" INI_SYSTEM PHP <= 5.2.6'da INI_PERDIR. PHP 7.2.0 itibariyle kullanımı önerilmemektedir.PHP 8.0.0'da kaldırıldı.
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 ve sonrasında kullanılabilir.
mbstring.regex_stack_limit "100000" INI_ALL PHP 7.3.5 ve sonrasında kullanılabilir.
INI_* kiplerinin tanımları ve ayrıntılı açıklamaları Yapılandırma ayarlarının yeri bölümünde bulunabilir.

Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.

mbstring.language string

Mbstring modülünde kullanılan öntanımlı ulusal dil ayarı (NLS). Bu yönerge, php.ini dosyasında kendinden sonra tanımlanması gereken mbstring.internal_encoding yönergesini otomatik ve sihirli olarak etkin kılar.

mbstring.encoding_translation bool

HTTP sorgularında girdi kodlamasını algılayıp dahili karakter kodlamasına dönüştüren şeffaf karakter kodlama süzgecini etkin kılar.

mbstring.internal_encoding string
Uyarı

Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

Öntanımlı dahili karakter kodlamasını tanımlar.

Bu boş bıraklımalı ve yerine default_charset kullanılmalıdır.

mbstring.http_input string
Uyarı

Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

Öntanımlı HTTP girdi karakter kodlamasını tanımlar.

Bu boş bıraklımalı ve yerine default_charset kullanılmalıdır.

mbstring.http_output string
Uyarı

Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR.

Öntanımlı HTTP çıktı karakter kodlamasını tanımlar (çıktı, dahili karakter kodlamasından HTTP çıktı karakter kodlamasına dönüştürülerek çıktılanır).

Bu boş bıraklımalı ve yerine default_charset kullanılmalıdır.

mbstring.detect_order string

Öntanımlı karakter kodlaması algılama sırasını tanımlar. Ayrıca bakınız: mb_detect_order().

mbstring.substitute_character string

Geçersiz karakter kodlaması yerine kullanılacak karakteri tanımlar. Desteklenen değerler için mb_substitute_character() işlevine bakın.

mbstring.func_overload string
Uyarı

Bu özelliğin kullanımı PHP 7.2.0 itibariyle ÖNERİLMEMEKTE olup PHP 8.0.0'da tamamen KALDIRILMIŞTIR. Bu işleve kesinlikle güvenilmemelidir.

Mbstring taydaşları tarafından sağlanan tek baytlık işlevlerin yerine otomatik olarak mbstring işlevlerinin kullanılmasını sağlar. Daha ayrınılı bilgi için İşlevlerin Aşırı Yüklenme Özelliği bölümüne bakınız.

Bu atama sadece php.ini dosyasından değiştiilebilir.

mbstring.http_output_conv_mimetypes string

mbstring.strict_detection bool

Katı kodlama algılaması etkin kılınır. Açıklama ve örnekler mb_detect_encoding()işlevinde bulunabilir.

mbstring.regex_retry_limit int

Çok baytlı düzenli ifade eşleştirmesi sırasında işlenebilen geri izleme miktarını sınırlar.

Bu yönerge yalnızca kurulum oniguruma >= 6.8.0 ile ilintilenmişse kullanılabilir.

mbstring.regex_stack_limit int

Mbstring düzenli ifadelerinin yığıt derinliği sınırlar.

» HTML 4.01 belirtimine göre, tarayıcıların, bir formdan sayfada kullanılandan farklı bir karakter kodlaması ile veri göndermelerine izin verilmektedir. Tarayıcılar tarafından kullanılan karakter kodlamasının saptanması hakkında bilgi edinmek için mb_http_input() işlevine bakınız.

Günümüz tarayıcıları bir HTML sayfanın karakter kodlamasını kabul edilebilir bir doğrulukta tahmin edebiliyor olsalar da, Content-Type HTTP başlığının charset bağımsız değişkenine header() işleviyle veya default_charset INI yönergesiyle uygun bir değer atamak daha iyidir.

Örnek 1 - php.ini ayar örnekleri

; Öntanımlı dili belirtin.
mbstring.language        = Neutral; öntanımlıdır; belli bir dil yoktur (UTF-8)
mbstring.language        = Turkish; öntanımlı dil Türkçe
mbstring.language        = Japanese; öntanımlı dil Japonca

;; Öntanımlı dahili kodlamasını tanımlayın.
;; Önemli: PHP'de çalışan bir karakter kodlaması belirtin
mbstring.internal_encoding    = UTF-8  ; Dahili kodlama UTF-8

;; HTTP girdi kodlaması dönüşümü etkindir.
mbstring.encoding_translation = On

;; Öntanımlı HTTP girdi karakter kodlamasını tanımlayın.
;; Önemli: Betik, http_input ayarını değiştiremez.
mbstring.http_input           = pass    ; Dönüşüm yok.
mbstring.http_input           = auto    ; HTTP girdisi otomatik
           ; "auto"  mbstring.language atamasına göre genişletilir.
mbstring.http_input           = SJIS    ; HTTP girdisi SJIS olur
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Sıralama belirtir

;; Öntanımlı HTTP çıktı karakter kodlamasını tanımlayın.
mbstring.http_output          = pass    ; Dönüşüm yok.
mbstring.http_output          = UTF-8   ; HTTP çıktı kodlaması UTF-8

;; Öntanımlı kodlama algılama sırasını belirtin.
mbstring.detect_order         = auto    ; Algılama sırası otomatik
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Sıralama belirtir

;; Öntanımlı geçersiz karakter ikame karakteri
mbstring.substitute_character = 12307   ; Bir Evrenkodlu değer
mbstring.substitute_character = none    ; Karakter basılmaz
mbstring.substitute_character = long    ; Uzun, örnek: U+3000,JIS+7E7E

Örnek 2 - EUC-JP kullanıcıları için php.ini ayarları

;; Çıktı Tamponlaması kapalı
output_buffering      = Off

;; HTTP başlık karakter kümesi
default_charset       = EUC-JP

;; Öntanımlı dil: Japonca
mbstring.language = Japanese

;; HTTP girdi kodlaması dönüşümü etkin
mbstring.encoding_translation = On

;; HTTP girdi kodlaması dönüşümü: otomatik
mbstring.http_input   = auto

;; HTTP çıktısı EUC-JP'ye dönüştürülür
mbstring.http_output  = EUC-JP

;; Dahili kodlama EUC-JP'dir
mbstring.internal_encoding = EUC-JP

;; Geçersiz karakter basılmaz
mbstring.substitute_character = none

Örnek 3 - SJIS kullanıcıları için php.ini ayarları

;; Çıktı Tamponlaması etkin
output_buffering     = On

;; çıktı dönüşümünü mb_output_handler yapar
output_handler       = mb_output_handler

;; HTTP başlık karakter kümesi
default_charset      = Shift_JIS

;; Öntanımlı dil: Japonca
mbstring.language = Japanese

;; HTTP girdi kodlaması dönüşümü: otomatik
mbstring.http_input  = auto

;; HTTP çıktısı SJIS'e dönüştürülür
mbstring.http_output = SJIS

;; Dahili kodlama EUC-JP'dir
mbstring.internal_encoding = EUC-JP

;; Geçersiz karakter basılmaz
mbstring.substitute_character = none

add a note

User Contributed Notes 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