Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

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

Telif Hakkı Bildirileri için: [email protected]
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;

PHP:
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.

PHP:
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 İstanbul 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ı.

PHP:
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 orijinalliği bozulmuyor. Bu sadece Türkçe için de geçerli değil, standart dışı tüm diller için geçerli.

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

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

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

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

Bir başka örnekte Yunanca'dan gelsin.

PHP:
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.


Konu, ProTurk üzerinden alıntıdır.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap