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
/*
 * 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.

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