Sıradan Bloglardan Birisi
Etiketler: php ucwordstr ucwordstürkçe karakter
Ahmet
Sıradan bloglardan birisi :)
Yazar: Ahmet · Published 28 Aralık 2012
Yazar: Ahmet · Published 31 Mart 2013
Yazar: Ahmet · Published 14 Nisan 2013 · Last modified 12 Ağustos 2017
Tebrik ve teşekkür ederim
Neden kendinizi yoruyorsunuz? Zamanınızı boşa harcıyorsunuz.
o kadar satırın karşılığı :
$deger = mb_convert_case($deger, MB_CASE_TITLE, “iso-8859-9”);
$deger = mb_convert_case(‘işin iş’, MB_CASE_TITLE, “iso-8859-9″);
Şu tek satırlık fonksiyonu bir de UTF-8’de görelim 🙂
Gayette güzel çalışıyor UTF-8 ile. Sen sayfanı UTF-8 yapmazsan fonksiyon ne yapsın Ahmetcim? O kadar kodunu tek satırda öpüp attı.
Merhaba Adnan,
Yukarıdaki kod ekrana “Işin Iş” yazar. “İşin İş” yazmaz. Onun içinde Türkçe karakterlerde maalesef işe yaramaz 🙁
Bilginize, iyi çalışmalar.
Arkadaşlar tartışmaya gerek yok.. UTF8 de ki tek problem i -> İ dönüşümünde yaşanır.. onu da şu şekilde çözmek mümkün:
function ilkBuyuk($str) {
return ltrim(mb_convert_case(str_replace(‘i’, ‘İ’,$str), MB_CASE_TITLE, ‘UTF-8’));
}
echo ilkBuyuk(‘fıstıkçı şahap çek bir ıhlamur işin iş önce üretim’);
Çıktısı:
Fıstıkçı Şahap Çek Bir Ihlamur İşin İş Önce Üretim
Güzel bir paylaşım ve çalışıyor. Teşekkürler…
Performans sonuçlarını incelediğimizde;
ilkBuyuk() Fonksiyonu
0.077962875366211 microseconds
ucwords_tr() Fonksiyonu
0.34689903259277 microseconds
M Fatih’in verdiği fonksiyon yaklaşık olarak 4.4 kat daha hızlı görünüyor. ilkBuyuk() Fonksiyonunu kullanmanızı şiddetle tavsiye ederim…
Teşekkürler, M Fatih…
M Fatih’in kodu 10 numara… tekerleği tekrar icat etmeye gerek yok… ucwords_tr fonksiyonu ciddi kod kiriliği…
Kodun final halinide ben vereyim o zaman, küçük i lerde problem olduğu gibi büyük I larda da problem olmaktadır.
Final:
function ucwords_tr($str) {
return ltrim(mb_convert_case(str_replace(array(‘i’,’I’), array(‘İ’,’ı’),$str), MB_CASE_TITLE, ‘UTF-8’));
}
kaynak koddan incelediğimde bu return ltrim… fonksiyonu çıktı olarak tırnak işareti koyuyor başına dikkat ettiniz mi?
Dediğin gibi büyük I larda sorun oluyor diğer şekilde. Bu hali enfes… Eline sağlık.
Teşekkürler. İnternette arama yaparken denk geldim 🙂
Budur arkadaşlar. Helal olsun M Fatih ve Kaan
yok tamam öyle değilmiş pardon
Kodlar çok güzel ama, son kodda tek tırnak ifadesnden sonraki harfi de büyük gösteriyor. Örneğin: “Ahmet’in oradaydım” cümlesini “Ahmet’İn oradaydım” şeklinde düzenliyor. Bunun çözümü yok mudur?
Tebrik ve teşekkür ederim
Arkadaşlar ı karakterinde de sorun çıkartıyor. ILGAZ kelimesini => ilgaz yapıyor bende. Bu sorunun çözümü için kodu güncelledim.
function ilkBuyuk($str) {
$str = str_replace(‘i’, ‘İ’,$str);
$str = str_replace(‘I’, ‘ı’,$str);
return ltrim(mb_convert_case($str, MB_CASE_TITLE, ‘UTF-8’));
}
ellerinize sağlık işimi halletti.
Metinde i̇ harfi (üstü çift noktalı i) sorunu ile karşılaşanlar aşağıdaki çözümü kullanabilirler.
function fucwords($str) {
return str_replace(‘i̇’, ‘i’, ltrim(mb_convert_case(str_replace(array(‘i’,’I’), array(‘İ’,’ı’), $str), MB_CASE_TITLE, ‘UTF-8’)));
}
Merhaba Ahmet kardeşim, fonksiyonun beni kurtardı çok teşekkürler. mb_convert_case her ne kadar kodu kısaltsa da bilinmeyen bir handikapı var. Çıktısı ekranda düzgün gözüküyor ama kopyalayıp notepade yapıştırırsan bozuk bir şekilde yapıştırıyor. Ekrandaki metni kopyalayıp başka yere yapıştıracaklar için sıkıntılı.
function strtoupper_tr($text) {
$search = [‘ç’, ‘ğ’, ‘ı’, ‘i’, ‘ö’, ‘ş’, ‘ü’];
$replace = [‘Ç’, ‘Ğ’, ‘I’, ‘İ’, ‘Ö’, ‘Ş’, ‘Ü’];
$text = str_replace($search, $replace, $text);
$text = mb_strtoupper($text);
return $text;
}
function strtolower_tr($text) {
$search = [‘Ç’, ‘Ğ’, ‘I’, ‘İ’, ‘Ö’, ‘Ş’, ‘Ü’];
$replace = [‘ç’, ‘ğ’, ‘ı’, ‘i’, ‘ö’, ‘ş’, ‘ü’];
$text = str_replace($search, $replace, $text);
$text = mb_strtolower($text);
return $text;
}
function ucfirst_tr($text) {
$ftxt = mb_substr($text, 0, 1, mb_detect_encoding($text));
$rtxt = mb_substr($text, 1, strlen($text) – 1, mb_detect_encoding($text));
$text = strtoupper_tr($ftxt).strtolower_tr($rtxt);
return $text;
}
function ucwords_tr($text) {
$text_list = “”; $words = explode(” “, $text);
for ($i=0; $i 0 ? ” ” : “”).ucfirst_tr($words[$i]);
}
}
return $text_list;
}
Dört fonksiyon ayrı ayrı da kullanılabilir. Yukarıdaki ve başka sitelerde bulduğum fonksiyonların tümünde i karakteri ile ilgili sorun yaşadığım için kendi çözümümü kendi buldum. Belki işe arayabilir.
Ahmet kardeşim yukarıdaki düzeltme iletilerimi silersen sevinirim. Her post edişte for döngüsü ile ilgili traşlama olduğu için fonksiyonun görsel bağlantısını eklemek durumunda kaldım.