Türkçe Karakter Destekli Ucwords() Fonksiyonu

php

Bilginiz gibi ucwords() fonksiyonu türkçe karakterleri desteklemiyor. Php.net’te yayınlanan fonksiyonumu burada da paylaşmak istedim.

PHP.net Ucwords()

Bu sayfa 8.559 kez görüntülendi.

Ahmet

Sıradan bloglardan birisi :)

Bunlar da hoşunuza gidebilir...

23 Cevaplar

  1. Adaş dedi ki:

    Tebrik ve teşekkür ederim

  2. Donttouch dedi ki:

    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”);

    • Ahmet dedi ki:

      $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 🙂

      • Adnan dedi ki:

        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ı.

        • Ahmet dedi ki:



          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.

          • M Fatih dedi ki:

            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

  3. Ramazan dedi ki:

    Güzel bir paylaşım ve çalışıyor. Teşekkürler…

  4. Ahmet dedi ki:

    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…

  5. Ahmet A dedi ki:

    M Fatih’in kodu 10 numara… tekerleği tekrar icat etmeye gerek yok… ucwords_tr fonksiyonu ciddi kod kiriliği…

  6. Kaan dedi ki:

    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’));
    }

  7. Kağan dedi ki:

    Budur arkadaşlar. Helal olsun M Fatih ve Kaan

  8. taner dedi ki:

    yok tamam öyle değilmiş pardon

  9. enes dedi ki:

    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?

  10. mehmetunal dedi ki:

    Tebrik ve teşekkür ederim

  11. Gökhan Filiz dedi ki:

    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’));
    }

  12. metin dedi ki:

    ellerinize sağlık işimi halletti.

  13. Birisi dedi ki:

    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’)));
    }

  14. Metin dedi ki:

    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ı.

  15. FatihG dedi ki:

    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.

  16. FatihG dedi ki:

    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.

    Ekran Görüntüsü

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir