array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.mb-detect-encoding.php', 1 => 'mb_detect_encoding', ), 'up' => array ( 0 => 'ref.mbstring.php', 1 => 'Çok baytlı Dizge İşlevleri', ), 'prev' => array ( 0 => 'function.mb-decode-numericentity.php', 1 => 'mb_decode_numericentity', ), 'next' => array ( 0 => 'function.mb-detect-order.php', 1 => 'mb_detect_order', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/mbstring/functions/mb-detect-encoding.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_detect_encoding — Karakter kodlamasını algılar
$dizge
, array|string|null $kodlamalar
= null
, bool $katı
= false
): string|false
Sıralı adaylar listesinden string türündeki
dizge
için en uygun karakter kodlamasını saptar.
Amaçlanan karakter kodlamasının otomatik tespiti hiçbir zaman tamamen güvenilir olamaz; bazı ek bilgiler olmadan, şifrelenmiş bir dizenin şifresini anahtarsız çözmeye benzer. Verilerle birlikte depolanan veya iletilen karakter kodlamasının bir "Content-Type" HTTP başlığı gibi bir göstergesinin kullanılması her zaman tercih edilir.
Bu işlev, tüm bayt dizilerinin geçerli bir dizge oluşturmadığı çok baytlı kodlamalarda çok yararlıdır. Belirtilen dizge böyle bir dizi içeriyorsa, bu kodlama reddedilecek ve sonraki kodlamaya bakılacaktır.
dizge
Kodlaması algılanacak dizge.
kodlamalar
kodlamalar
ile denenecek karakter
kodlamalarının listesi belirtilir. Algı sırası bir dizeler dizisi veya
virgül ayraçlı bir liste olarak belirtilebilir.
kodlamalar
atlanırsa veya null
ise,
dahili algılama sırası
veya mb_detect_order() işlevi kullanılır.
katı
dizge
kodlamalar
listesi
için geçersiz olduğunda izlenecek yolu belirler.
katı
false
ise en yakın eşleşen kodlama döner,
true
belirtilmişse false
döner.
katı
için öntanımlı değer, mbstring.strict_detection
yapılandırma seçeneği ile atanabilir.
dizge
kodlamalar
listesi
için geçersiz ise false
, yoksa algılanan karakter kodlaması döner.
Örnek 1 - mb_detect_encoding() örneği
<?php
// Karakter kodlamasını dahili algı sırasını kullanarak algılatalım
echo mb_detect_encoding($str);
// "auto" değeri mbstring.language ini değerine göre genişletilir
echo mb_detect_encoding($str, "auto");
// Kodlamaları virgül ayraçlı liste olarak belirtelim
echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");
// Kodlamaları dizi olarak belirtelim
$encodings = [
"ASCII",
"JIS",
"EUC-JP"
];
echo mb_detect_encoding($str, $encodings);
?>
Örnek 2 - katı
bağımsız değişkeninin etkisi
<?php
// 'áéóú' ISO-8859-1'de kodlandı
$str = "\xE1\xE9\xF3\xFA";
// Dizge ASCII veya UTF-8 için geçersiz, fakat UTF-8 daha iyi eşleşiyor
var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8'], false));
var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8'], true));
// Geçersiz kodlama bulunursa, katı bağımsız değişkeni sonucu değiştirmez
var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8', 'ISO-8859-1'], false));
var_dump(mb_detect_encoding($str, ['ASCII', 'UTF-8', 'ISO-8859-1'], true));
?>
Yukarıdaki örneğin çıktısı:
string(5) "UTF-8" bool(false) string(10) "ISO-8859-1" string(10) "ISO-8859-1"
Bazı durumlarda aynı bayt sırası çok sayıda karakter kodlamasında geçerli bir dizge verebilir ve hangi yorumun amaçlandığını anlamak mümkündür. Örneğin, "\xC4\xA2" bayt sırasını ele alalım:
Örnek 3 - Çok sayıda kodlama eşleştiğinde sıralamanın etkisi
<?php
$str = "\xC4\xA2";
// Dizge üç kodlamada da geçerli, dolayısıyla listenin başındaki döner
var_dump(mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'ISO-8859-5']));
var_dump(mb_detect_encoding($str, ['ISO-8859-1', 'ISO-8859-5', 'UTF-8']));
var_dump(mb_detect_encoding($str, ['ISO-8859-5', 'UTF-8', 'ISO-8859-1']));
?>
Yukarıdaki örneğin çıktısı:
string(5) "UTF-8" string(10) "ISO-8859-1" string(10) "ISO-8859-5"