Dijital Ürün ve 2. el Ürün Satış Platformu / Şimdi Kayıt Ol

PHP ile Karakterleri Büyük/Küçük Harfe Çevirme

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. 

echo strtolower('MERSİN'); // Mersin
echo strtolower('ANKARA'); // Ankara
echo strtoupper(kayseri'); // KAYSERI
echo ucwords('mersinde hava ilık ve çok sıcak'); // Mersinde Hava Ilik ve çok Sıcak

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ça 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

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

 

Kaynak: https://prototurk.com/makaleler/php-turkce-buyuk-kucuk-harf-cevirme

 

henüz yorum yok
Tema Ayarları

Kendi özelleştirilmiş stilini belirle

Mod Seç

Uygulamanız için mükemmel renk modunu seçin.


RTL Mode

Dil yönünüzü değiştirin


Fluid Layout

Tam ekran modu aç/kapat


Navigasyon Konumu

Web sitesi için uygun bir menü sistemi seçin


Görünüm