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

01< ?php
02/*
03 * Sınıf        : strtrfunc
04 *
05 * @Geliştirici : İzzet Emre Erkan <kara@karalamalar.net>, <eerkan @graf2.com="">
06 * URL          : https://www.karalamalar.net
07 *      
08 * @Versiyon    : 1.0
09 * Tarih        : 09.01.2007
10 * Amaç         : Metin şekillendirme işlemlerinin Türkçe karakterler ile uyumlu bir şekilde yapılması
11 */
12 
13class 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?></eerkan></kara@karalamalar.net>

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

01< ?php
02include("./class.strtrfunc.php");
03 
04$tr = new strtrfunc();
05 
06echo $tr->buyut("belki ağlamıyordu ama ne kadar saklamaya çalışsa da üzüntüsü gözlerinden okunabiliyordu.");
07echo "<br>";
08echo $tr->kucult("BELKİ AĞLAMIYORDU AMA NE KADAR SAKLAMAYA ÇALIŞSA DA ÜZÜNTÜSÜ GÖZLERİNDEN OKUNABİLİYORDU.");
09echo "<br>";
10echo $tr->ihb("belki");
11echo "<br>";
12echo $tr->ihbc("belki ağlamıyordu ama ne kadar saklamaya çalışsa da ÜZÜNTÜSÜ gözlerinden okunabiliyordu.");
13echo "<br>";
14echo $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.

“Türkçe karakterlerle ilgili php sınıfı (class) strtrfunc” üzerine 2 yorum

  1. kardeş nerelerdesin

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

  2. Bu güzel açıklayıcı anlatım için çok-çok teşekkür ediyorum.

Yorumlar kapalı.

Buy Me A Coffee