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 /* * Sınıf : strtrfunc * * @Geliştirici : İzzet Emre Erkan, * URL : https://www.karalamalar.net * * @Versiyon : 1.0 * Tarih : 09.01.2007 * Amaç : Metin şekillendirme işlemlerinin Türkçe karakterler ile uyumlu bir şekilde yapılması */ class strtrfunc { private $kHarf; // Türkçe karakterler (Küçük) private $bHarf; // Türkçe karakterler (Büyük) function __construct() { $this->kHarf = array("i","ı","ş","ğ","ö","ü","ç"); $this->bHarf = array("İ","I","Ş","Ğ","Ö","Ü","Ç"); } /* * Türkçe karakterleri dikkate alarak kelimenin tüm harflerini büyütür. * * @param string $metin * @return string */ function buyut($metin) { return strtoupper(str_replace($this->kHarf,$this->bHarf,$metin)); } /* * Türkçe karakterleri dikkate alarak kelimenin tüm harflerini küçültür. * * @param string $metin * @return string */ function kucult($metin) { return strtolower(str_replace($this->bHarf,$this->kHarf,$metin)); } /* * Türkçe karakterleri dikkate alarak, parametre olarak gönderilen kelimeyi ilk harfi büyük, * geriye kalan harfleri küçük hale getirir. (Cümleler için ihbc fonksiyonunu kullanın) * ihb = ilk harf büyük * * @param string $metin * @return string */ function ihb($metin) { $metin = $this->kucult($metin); return strtoupper($this->buyut(substr($metin,0,1))).substr($metin,1); } /* * Bir cümlenin ilk harfini ($tumu = false) ya da bütün kelimelerinin ilk harflerini ($tumu = true) büyüten fonksiyon * Kelimelerin ilk harflerini büyütürken ihb fonksiyonunu kullanır. Tümü büyük harften oluşan kelimeleri pas geçer. * (Örneğin AIDS, TBMM vb) * ihbc = ilk harf büyük cümle * * @param string $metin * @param boolean $tumu * @param boolean $bKelime * @return metin */ function ihbc($metin, $tumu = false) { $kelimeler = explode(" ", $metin); $metin = ""; if(count($kelimeler)>1) { $i=0; foreach($kelimeler as $kelime) { if($kelime == $this->buyut($kelime)) $metin .= $kelime." "; else { if($i < 1) $metin .= $this->ihb($kelime)." "; else $metin .= ($tumu?$this->ihb($kelime):$kelime)." "; $i++; } } $metin = substr($metin,0,-1); } else { if($kelimeler[0] == $this->buyut($kelimeler[0])) $metin .= $kelimeler[0]; else $metin = $this->ihb($kelimeler[0]); } return $metin; } } ?>
Kullanımı için örnek:
ornek.php
< ?php include("./class.strtrfunc.php"); $tr = new strtrfunc(); echo $tr->buyut("belki ağlamıyordu ama ne kadar saklamaya çalışsa da üzüntüsü gözlerinden okunabiliyordu."); echo "
"; echo $tr->kucult("BELKİ AĞLAMIYORDU AMA NE KADAR SAKLAMAYA ÇALIŞSA DA ÜZÜNTÜSÜ GÖZLERİNDEN OKUNABİLİYORDU."); echo "
"; echo $tr->ihb("belki"); echo "
"; echo $tr->ihbc("belki ağlamıyordu ama ne kadar saklamaya çalışsa da ÜZÜNTÜSÜ gözlerinden okunabiliyordu."); echo "
"; echo $tr->ihbc("belki ağlamıyordu ama ne kadar saklamaya çalışsa da ÜZÜNTÜSÜ gözlerinden okunabiliyordu.",true); ?>
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.
kardeş nerelerdesin
bi ulaşta konuşalım vede telefon numaranı ver de arayalım. varmı bir ihtiyacın
Bu güzel açıklayıcı anlatım için çok-çok teşekkür ediyorum.