Modern web geliştirmede, genellikle ASCII olmayan karakterleri içeren çok çeşitli karakter ve dilleri yönetmek zorunludur. PHP 8, Unicode ve çok baytlı (multibyte) dizeler için geliştirilmiş destek sağlayarak uygulamalarınızın farklı karakter kodlamalarını ve dilleri etkili bir şekilde işlemesini garanti eder.
Örnek: mb_strlen() ile Uzunluk Hesaplama
PHP:
Örnek: mb_substr() ile Alt Dize Çıkarma
PHP:
Örnek: Kodlama Dönüşümü
PHP:
Örnek: mb_normalize() ile Karakter Eşitleme
PHP:
Örnek: Dosya İçeriğini Kodlama Dönüşümüyle Okuma
PHP:
Özetle, PHP 8'in Unicode ve çok baytlı dizelere yönelik desteği, çeşitli karakter kodlamaları ve dillerle sorunsuz çalışan uygulamalar oluşturmak için hayati öneme sahiptir. mb_ fonksiyonları ve ilgili özellikler, PHP uygulamalarınızın modern uluslararasılaştırma ve yerelleştirme gereksinimlerinin karmaşıklıklarını doğru bir şekilde yönetebilmesini sağlar.
6.4.1. Çok Baytlı Dize Fonksiyonları (mb_ Prefix)
PHP, varsayılan ISO-8859-1 (Latin-1) dışındaki karakter kodlamalarıyla çalışmanıza olanak tanıyan bir dizi çok baytlı dize fonksiyonu (mb_ önekli) sunar. Bu fonksiyonlar, Çince, Japonca veya Arapça gibi çok baytlı karakterler kullanan dilleri işlemek için kritik öneme sahiptir.Örnek: mb_strlen() ile Uzunluk Hesaplama
PHP:
$text = 'こんにちは、世界!'; // Japonca selamlama
$length = mb_strlen($text, 'UTF-8'); // Karakter kodlamasını belirtin (UTF-8)
echo "Dizenin uzunluğu: $length karakterdir.";
// Çıktı: Dizenin uzunluğu: 8 karakterdir.
Bu örnekte, mb_strlen(), Japonca selamlama dizesinin uzunluğunu doğru bir şekilde belirlemek için 'UTF-8' karakter kodlamasıyla birlikte kullanılır.6.4.2. Çok Baytlı Dize Manipülasyonu
mb_substr() fonksiyonu, karakterleri bölmeden çok baytlı bir dizenin bölümlerini ayıklamanıza olanak tanır. Bu, çok baytlı kodlama kullanan dillerde alt dizelerle çalışmak için hayati öneme sahiptir.Örnek: mb_substr() ile Alt Dize Çıkarma
PHP:
$text = '你好,世界!'; // Çince selamlama
$substring = mb_substr($text, 0, 2, 'UTF-8'); // İlk iki karakteri çıkar
echo "Alt dize: $substring";
// Çıktı: Alt dize: 你好
Bu örnekte, mb_substr(), çok baytlı bir kodlamada bile, çıkarılan alt dizenin tam karakterlerden oluşmasını sağlar.6.4.3. Karakter Kodlaması Dönüşümü
PHP 8, farklı karakter kodlamaları arasında dönüşüm yapmak için mb_convert_encoding() gibi fonksiyonlar sağlar. Bu, çeşitli kodlamalarda gelen verilerle çalışmanız gerektiğinde kullanışlıdır.Örnek: Kodlama Dönüşümü
PHP:
$text = 'Привет, мир!'; // Rusça selamlama (Windows-1251 kodlamasında olduğunu varsayalım)
$utf8Text = mb_convert_encoding($text, 'UTF-8', 'Windows-1251'); // Windows-1251'den UTF-8'e dönüştür
echo "UTF-8 kodlanmış metin: $utf8Text";
// Çıktı: UTF-8 kodlanmış metin: Привет, мир!
Bu örnekte, mb_convert_encoding(), bir dizeyi Windows-1251 kodlamasından UTF-8'e dönüştürmek için kullanılır.6.4.4. Unicode Normalizasyonu
Aynı karakterin farklı gösterimleriyle çalışırken Unicode normalizasyonu çok önemlidir. PHP 8, Unicode dizelerini normalleştirmek için mb_normalize() gibi fonksiyonlar sağlayarak tutarlılık sağlar.Örnek: mb_normalize() ile Karakter Eşitleme
PHP:
$text1 = 'Café'; // Birleştirilmiş é
$text2 = 'Café'; // Ayrılmış e ve birleştirme aksanı
// Her iki metni de NFC (Bileşik Form) ile normalleştir.
$normalized1 = mb_normalize('NFC', $text1);
$normalized2 = mb_normalize('NFC', $text2);
echo "Eşdeğer mi? " . ($normalized1 === $normalized2 ? 'Evet' : 'Hayır');
// Çıktı: Eşdeğer mi? Evet
Bu örnekte, mb_normalize() kelimenin iki sürümünü NFC (bileşik form) olarak normalleştirmek için kullanılır ve onları eşdeğer hale getirir.6.4.5. Dosya İşlemlerinde Unicode Karakterleri Yönetme
Unicode karakterler içeren dosyalarla çalışırken, uygun karakter kodlamasını belirtmek esastır. Dosya okuma ve yazma işlemlerini çok baytlı karakter kodlamalarıyla doğru bir şekilde ele almak için mb_ fonksiyonlarını kullanabilirsiniz.Örnek: Dosya İçeriğini Kodlama Dönüşümüyle Okuma
PHP:
$filename = 'unicode.txt';
$content = file_get_contents($filename); // Çok baytlı karakterler içeren dosyayı oku
$decodedContent = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1'); // İçeriği UTF-8'e dönüştür
echo $decodedContent;
Bu kodda, file_get_contents() çok baytlı karakterler içeren bir dosyayı okur ve ardından mb_convert_encoding() içeriği doğru işleme için UTF-8'e dönüştürür.Özetle, PHP 8'in Unicode ve çok baytlı dizelere yönelik desteği, çeşitli karakter kodlamaları ve dillerle sorunsuz çalışan uygulamalar oluşturmak için hayati öneme sahiptir. mb_ fonksiyonları ve ilgili özellikler, PHP uygulamalarınızın modern uluslararasılaştırma ve yerelleştirme gereksinimlerinin karmaşıklıklarını doğru bir şekilde yönetebilmesini sağlar.


