Bugünlerde geliştirmeye çalıştığım bir proje için sık sık php kullanır oldum. Kullanıcı metin girerken en azından adını bari düzgün yazsa bizi uğraştırmayacak fakat bu hususu düşünen php, ucwords diye bir fonksiyon geliştirmiş. Nitekim bizim alfabemiz pek düşünülmemiş bu konuda. Ne yaptık? Bizde Türkçe ucwords yaptık.
Nedir ne işe yarar?
ucwords fonksiyonu cümledeki kelimelerin ilk harflerini büyütmeye yarar. Fakat cümlenizde türkçe karakterler varsa umrunda bile olmaz o karakterle hiç uğraşmaz. Biz uğraşıyoruz!
{
$uzunluk=strlen($gelen);
$ilkharf = mb_substr($gelen,0,1,”UTF-8″);
$sonrakiharfler = mb_substr($gelen,1,$uzunluk,”UTF-8″);
$bir = array(‘ö’,’ç’,’i’,’ş’,’ğ’,’ü’);
$iki = array(‘Ö’,’Ç’,’İ’,’Ş’,’Ğ’,’Ü’);
$buyumus = str_replace($bir,$iki,$ilkharf);
return ucwords($buyumus).$sonrakiharfler;
}
“trtekkelime” fonksiyonumuz gelen kelimenin ilk harfini “ilkharf” adında bir değişkene alıyor, ilk harften sonra gelenleri de “sonrakiharfler” değişkenine alıyor. “str_replace” fonksiyonu ile de “bir” dizisinde belirttiğimiz karakterlerleri “ilkharf” değişkenimizde arayarak “iki” dizisinde aynı indeks numarasına sahip değer ile değiştiriyor. ucwords kullanmamızın sebebi ise her zaman Türkçe karakter gelmeyebilir, biz yine de büyütelim.
{
$bol = explode(” “,$metin);
foreach($bol as $bolen)
{
$gelen = $gelen.trtekkelime($bolen).” “;
}
return $gelen;
}
“trcumle” fonksiyonumuz ise gelen cümleyi önce kelime kelime ayırıp “bol” adında bir dizi yapıyor. Daha sonra ise her kelimeyi “trtekkelime” fonksiyonuna göndererek ilk harflerini büyütmeyi sağlıyor. Fonksiyondan gelen kelimeyi de “gelen” değişkenine ekleyerek bir sonraki kelime için tekrar dönüyor(foreach). Örnek dosya için buradan.
Örneğin :
$adsoyad = “çağlar şakalak” echo trcumle($adsoyad);Sonuç: Çağlar Şakalak
Not: Tüm Türkçe karakter sorunlarınız için öncelikle php kodlarınızın en başında “header(“content-type:text/html;charset=utf8″);” satırını eklemeyi unutmayınız.