Türkçe karakterlerle ilgili php sınıfı (class) strtrfunc

Uygulamalarımızda string manipulation dediğimiz metin değerlerin şekillendirilmesinde kullanılan bazı fonksiyonlar vardır. PHP'nin dahili fonksiyonları malesef Türkçe karakterlerle (ğüşıöç-ĞÜŞİÖÇ) uyumlu çalışmıyor. Geliştirdiğim uygulamalarda kullandığım bazı fonksiyonları bir araya topladım ve bir sınıf (class) haline getirdim. Bunu da sizlerle paylaşayım dedim.

class.strtrfunc.php

PHP:
  1. <?php
  2. /*
  3. * Sınıf        : strtrfunc
  4. *
  5. * @Geliştirici : İzzet Emre Erkan <kara@karalamalar.net>, <eerkan @graf2.com>
  6. * URL          : http://www.karalamalar.net
  7. *       
  8. * @Versiyon    : 1.0
  9. * Tarih        : 09.01.2007
  10. * Amaç         : Metin şekillendirme işlemlerinin Türkçe karakterler ile uyumlu bir şekilde yapılması
  11. */
  12.  
  13. class strtrfunc {
  14.     private $kHarf; // Türkçe karakterler (Küçük)
  15.     private $bHarf; // Türkçe karakterler (Büyük)
  16.    
  17.     function __construct() {
  18.         $this->kHarf = array("i","ı","ş","ğ","ö","ü","ç");
  19.         $this->bHarf = array("İ","I","Ş","Ğ","Ö","Ü","Ç");
  20.     }
  21.     /*
  22.      * Türkçe karakterleri dikkate alarak kelimenin tüm harflerini büyütür.
  23.      *
  24.      * @param   string  $metin
  25.      * @return  string
  26.      */
  27.     function buyut($metin) {
  28.         return strtoupper(str_replace($this->kHarf,$this->bHarf,$metin));
  29.     }
  30.     /*
  31.      * Türkçe karakterleri dikkate alarak kelimenin tüm harflerini küçültür.
  32.      *
  33.      * @param   string  $metin
  34.      * @return  string
  35.      */
  36.     function kucult($metin) {
  37.         return strtolower(str_replace($this->bHarf,$this->kHarf,$metin));
  38.     }
  39.     /*
  40.      * Türkçe karakterleri dikkate alarak, parametre olarak gönderilen kelimeyi ilk harfi büyük,
  41.      * geriye kalan harfleri küçük hale getirir. (Cümleler için ihbc fonksiyonunu kullanın)
  42.      * ihb = ilk harf büyük
  43.      *
  44.      * @param   string  $metin
  45.      * @return  string
  46.      */
  47.     function ihb($metin) {
  48.         $metin = $this->kucult($metin);
  49.         return strtoupper($this->buyut(substr($metin,0,1))).substr($metin,1);
  50.     }
  51.     /*
  52.      * Bir cümlenin ilk harfini ($tumu = false) ya da bütün kelimelerinin ilk harflerini ($tumu = true) büyüten fonksiyon
  53.      * Kelimelerin ilk harflerini büyütürken ihb fonksiyonunu kullanır. Tümü büyük harften oluşan kelimeleri pas geçer.
  54.      * (Örneğin AIDS, TBMM vb)
  55.      * ihbc = ilk harf büyük cümle
  56.      *
  57.      * @param   string  $metin
  58.      * @param   boolean        $tumu
  59.      * @param   boolean      $bKelime
  60.      * @return  metin
  61.      */
  62.     function ihbc($metin, $tumu = false) {
  63.         $kelimeler = explode(" ", $metin);
  64.         $metin = "";
  65.         if(count($kelimeler)>1) {
  66.             $i=0;
  67.             foreach($kelimeler as $kelime) {
  68.                 if($kelime == $this->buyut($kelime)) $metin .= $kelime." ";
  69.                 else {
  70.                     if($i <1) $metin .= $this->ihb($kelime)." ";
  71.                     else $metin .= ($tumu?$this->ihb($kelime):$kelime)." ";
  72.                     $i++;
  73.                 }
  74.             }
  75.             $metin = substr($metin,0,-1);
  76.         }
  77.         else {
  78.             if($kelimeler[0] == $this->buyut($kelimeler[0])) $metin .= $kelimeler[0];
  79.             else $metin = $this->ihb($kelimeler[0]);
  80.         }
  81.         return $metin;
  82.     }
  83. }
  84. ?>

Kullanımı için örnek:
ornek.php

PHP:
  1. <?php
  2. include("./class.strtrfunc.php");
  3.  
  4. $tr = new strtrfunc();
  5.  
  6. echo $tr->buyut("belki ağlamıyordu ama ne kadar saklamaya çalışsa da üzüntüsü gözlerinden okunabiliyordu.");
  7. echo "<br />";
  8. echo $tr->kucult("BELKİ AĞLAMIYORDU AMA NE KADAR SAKLAMAYA ÇALIŞSA DA ÜZÜNTÜSÜ GÖZLERİNDEN OKUNABİLİYORDU.");
  9. echo "<br />";
  10. echo $tr->ihb("belki");
  11. echo "<br />";
  12. echo $tr->ihbc("belki ağlamıyordu ama ne kadar saklamaya çalışsa da ÜZÜNTÜSÜ gözlerinden okunabiliyordu.");
  13. echo "<br />";
  14. echo $tr->ihbc("belki ağlamıyordu ama ne kadar saklamaya çalışsa da ÜZÜNTÜSÜ gözlerinden okunabiliyordu.",true);
  15. ?>

Sınıfın geliştirilebilmesi için aklımda bir kaç şey daha var. Örneğin bir paragrafın tüm cümlelerinin noktalama işaretlerine uygun olarak ilk harflerinin büyük hale getirilmesi gibi. Bunun için ilgili imla kurallarına uygun bir fonksiyon yazılması gerekli. Onu da şimdilik size bırakıyorum.

Bu yazıyı saklayın: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • Technorati
  • Ma.gnolia
  • digg
  • YahooMyWeb
  • co.mments
  • Furl
  • Google
Etiketler: , , , ,

“Türkçe karakterlerle ilgili php sınıfı (class) strtrfunc” için Bir yorum

  1. esenkur demiş ki:

    kardeş nerelerdesin

    bi ulaşta konuşalım vede telefon numaranı ver de arayalım. varmı bir ihtiyacın

Bir yorum yapın