v2.1.1
Giriş yap

PHP ile Türkçe Karakterleri Büyük/Küçük Harfe Çevirmek

Bildiğiniz gibi, PHP'de yazıları büyük-küçük harfe çevirmek için strtolower() ve strtoupper() kullanılıyor.

Ancak ne yazık ki, bu kullanım türkçe karakterlerin bazılarında sorun çıkarıyor. Örneklerle incelemek gerekirse;

echo strtolower('ÇANAKKALE'); // Çanakkale
echo strtolower('İSTANBUL'); // İstanbul
echo strtoupper('istanbul'); // ISTANBUL
echo ucwords('istanbul çok güzel bir şehir'); // Istanbul çok Güzel Bir şehir

Gördüğünüz gibi, büyük i harfini küçültmüyor, aynı şekilde küçük i harfini büyük ı olarak büyütüyor. Alternatif olarak multibyte fonksiyonları kullanmayı deneyebiliriz.

echo mb_strtolower('ÇANAKKALE', 'UTF-8'); // çanakkale
echo mb_strtolower('İSTANBUL', 'UTF-8'); // i̇stanbul
echo mb_strtoupper('istanbul', 'UTF-8'); // ISTANBUL
echo mb_convert_case('istanbul çok güzel bir şehir', MB_CASE_TITLE, "UTF-8"); // Istanbul Çok Güzel Bir Şehir

Çanakkale'de işe yaradı, ama büyük istanbul yazısını nasıl dönüştürdüğünü ve küçük i'yi hala büyük I olarak çevirdiğini fark ettiniz mi?

Evet, ne yazık ki bu çözümde işimize yaramadı. Deneyeceğimiz son şey ise çok fazla bilinmeyen Transliterator sınıfı.

echo Transliterator::create('tr-upper')->transliterate('istanbul'); // İSTANBUL
echo Transliterator::create('tr-lower')->transliterate('İSTANBUL'); // istanbul
echo Transliterator::create('tr-title')->transliterate('istanbul çok güzel bir şehir'); // İstanbul Çok Güzel Bir Şehir

Evet gördüğünüz gibi, işimizi çözdü. Bu sınıf her bir karakteri ASCII'ye dönüştürüyor böylece orjinalliği bozulmuyor. Bu sadece türkçe içinde geçerli değil, standart dışı tüm diller içinde geçerli.

Örneğin rusçe moskova anlamına gelen Москва́ ifadesini nasıl çevirebiliriz bir bakalım.

echo Transliterator::create('Any-Latin; Latin-ASCII')->transliterate('Москва́'); // Moskva

Bir başka örnekte arapçadan gelsin. selamun aleyküm anlamına gelen سلمون عليكم ifadesini okunabilir kılalım.

echo Transliterator::create('Any-Latin; Latin-ASCII')->transliterate('سلمون عليكم'); // slmwn ʿlykm

Bir başka örnekte yunancadan gelsin.

echo Transliterator::create('Any-Latin; Latin-ASCII')->transliterate('Ελλάδα'); // Ellada

Evet, sınıfla ilgili daha fazla merak ettiğiniz bir şey olursa, aşağıdaki bağlantıya bir gözatın.
https://www.php.net/manual/en/class.transliterator.php

tayfunerbilen
16 gün önce yazdı.
Önceki PHP ile QR Kod Oluşturma Sonraki Array / unshift()