Selco Cod
Selco Cod

Yazılım ve güvenlik üzerine makaleler yazan günümüz teknolojisini yakından takip eden sıradan birisi...

Twitter


PHP Türkçe Karekter(String) Fonksiyonları

Bilindiği üzere PHP de string anlamı karekter topluluklarına denmektedir. Bu string ifadeleri olduğundan daha başka duruma çeviren belli başlı fonksiyonlar vardır ve ben bu yazımda size onlardan bahsedeceğim. Yazımda üstünde duracağım genel ifadeler ise şunlardır; string ifadelerin tamamını büyük, küçük, ilk harf büyük, boşluktan sonra her harfin büyük olması ve türkçe string ifadelerinin bu fonksiyonlar ile uyumluluğu. Bu ne işimize yarayacak der iseniz örneğin başka bir string fonksiyonu str_replace(); ile çalışıyor isek bir değerin hem büyük hem küçük değerlerini replace etmemiz gerekir ve eğer harf birden fazla ise kombinasyonlara girmemiz gerekir bu da ek yük ve zaman kaybından başka birşey olmadığından bu tür fonksiyonlar kullanılmaktadır. Vakit kaybetmeden ilk fonksiyonumuz ile başlıyoruz.

strtolower();, mb_strtolower();

Bu karekter fonksiyonumuz ile string(yazı) ifadenin tüm karekterlerini küçük hale getiriyoruz.
<?php
$string = 'SELCUK.IN - YAZILIM FABRİKASI';
echo strtolower($string);
# Result: selcuk.in - yazilim fabrİkasi
?>
Görüldüğü üzere tam olarak türkçe kareklerde işlevini yerine getirememektedir fakat UTF-8 destekli mbstring kütüphanesini kullanarak bu soru aşabiliriz. Takibi sunucuda aktif edilmesi gerekmektedir.
<?php
$string = 'SELCUK.IN - YAZILIM FABRİKASI';
echo mb_strtolower($string, 'UTF-8');
# Result: selcuk.in - yazilim fabrikasi
?>

strtoupper();, mb_strtoupper();

Bu fonksiyonda string ifadelerimizin tamamını eğer büyük karekter değilse büyük karektere çevirir.
<?php
$string = 'selcuk.in - yazılım fabrikası';
echo strtoupper($string);
# Result: SELCUK.IN - YAZıLıM FABRIKASı
?>
Bu fonksiyonda türkçe karekter sorunu var ve bu sorunuda mbstring kütüphanesi ile aşacağız.
<?php
$string = 'selcuk.in - yazılım fabrikası';
echo mb_strtoupper($string, 'UTF-8');
# Result: SELCUK.IN - YAZILIM FABRIKASI
?>

ucfirst();

Fonksiyon string ifadelerin sadece ilk harfini küçük ise büyüğe çevirmektedir ve ne yazık ki genel string fonksiyonlarında olduğu bunda da türkçe karekter uyumsuzluğu mevcuttur.
<?php
$string = 'çelik, selçuk';
echo ucfirst($string);
# Result: çelik, selçuk
?>
Göründüğü gibi çalışması gerekirken "ç" gene küçük kaldı. PHP de ucfirst için ayrı bir fonksiyon var mı bilmiyorum o yüzden ötürü türkçe karekter desteklesin diye kendim bir fonksiyon yazdım. Bu fonksiyonu da mbstring kütüphanesi içinde yer alan mb_convert_case fonksiyonu ile yazdım. Eğer kullanmak isterseniz üstte belirttiğim gibi mbstring kütüphanesi kurulu olmalıdır.
<?php
function ucfirstTR($string) {
    $temp = preg_split("//u", $string, 2, PREG_SPLIT_NO_EMPTY);
    return mb_convert_case(
        str_replace("i", "İ", $temp[0]), MB_CASE_TITLE, "UTF-8").
        $temp[1];
}
$string = 'çelik, selçuk';
echo ucfirstTR($string);
# Result: Çelik, selçuk
?>

ucwords();, mb_convert_case();

Bu fonksiyonda string ifadedeki her boşluktan sonraki gelen karekteri küçük ise büyük yapmaya yarayan fonksiyondur ve bu da diğerleri gibi türkçe karekter desteklememektedir.
<?php
$string = 'çelik, selçuk';
echo ucwords($string);
# Result: çelik, Selçuk
?>
Baktığımızda görüyoruz ki türkçe harf ç hariç diğeri büyük harf olmuş. Şimdi bu sorunu mb_convert_case fonksiyonu ile çözüyoruz.
<?php
$string = 'çelik, selçuk';
echo mb_convert_case($string, MB_CASE_TITLE, "UTF-8");
# Result: Çelik, Selçuk
?>
Ayrıca mb_convert_case fonksiyonu ile strtolower ve strtoupper fonksiyonu gibi de kullanabiliyoruz onun içinde şöyle yapıyoruz ve söylemeden geçmeyelim bu bahsettiğimiz mbstring kütüphanesi sadece PHP 5 ile çalışmaktadır.
<?php
$string = 'SELCUK.IN - YAZILIM FABRİKASI';
echo mb_convert_case($string, MB_CASE_LOWER, "UTF-8");
# Result: selcuk.in - yazilim fabrikasi

$string = 'selcuk.in - yazılım fabrikası';
echo mb_convert_case($string, MB_CASE_UPPER, "UTF-8");
# Result: SELCUK.IN - YAZILIM FABRIKASI
?>



Yazı Hakkında Yorumlar