PHP ile Türkçe Heceleme Fonksiyonu - PHP Webmaster bilgi bankası, knowledge base Webmaster Araçları

AnaSayfa > PHP > PHP ile Türkçe Heceleme Fonksiyonu
Kategori: PHP
Gönderen: Admin
Tarih: 2009-02-13
Puan: 6   Puan:6 | Katılımcı:2 | Katılımcı : 2
Okunma: 4182
  
 
1 puan 2 puan 3 puan 4 puan 5 puan 6 puan 7 puan 8 puan 9 puan 10 puan

<?
// hececi
// Bir Metni Türkçe Hece Kurallarına Göre Hecelerine Ayırır.

class hececi{
var $kelimeDizisi=array();
var $heceDizisi=array();
var
$sesliler=array('a','e','ı','i','o','u','ö','ü','A','E','I','İ','O','Ö','U','Ü');

function hececi()
{
}

function hecelereAyir($text){
$a=explode(" ",$text);
foreach($a as $i=>$k){
$this->kelimeDizisi[]=trim($k);
}

foreach($this->kelimeDizisi as $i=>$kelime){
$this->_hecele($kelime,$i);
}
}

function heceliYazdir(){
$sonuc ="";
foreach($this->heceDizisi as $i=>$kd){
$kachece=count($kd);
$kelime="";
for($x=$kachece-1; $x>=0; $x--){
$kelime .= $kd[$x]."-";
}
$sonuc .= substr($kelime,0,-1)." ";
}
return $sonuc;
}

function _hecele($sozcuk,$sira){
/*sözcükte hiç sesli yoksa ya da sözcükte hiçbisey yoksa son olusturulan heceye ekle ve islemi durdur.*/
if(!$this->_sesliVarmi($sozcuk)){
if(isset($this->heceDizisi[$sira]) && ($sayi=count($this->heceDizisi[$sira]))>0)
$this->heceDizisi[$sira][$sayi-1]=$sozcuk.$this->heceDizisi[$sira][$sayi-1];
else
$this->heceDizisi[$sira] [0]=$sozcuk;
return;
}
$enSagdakiSesliKonumu=$this->_enSagdakiniBul($sozcuk,$this->sesliler);/** en sagdaki sesli harfin solundaki harf sesli ise o zaman
bu en sagdaki sesliden heceyi ayir */

if( $enSagdakiSesliKonumu == 0 || $this->_seslimi($sozcuk{$enSagdakiSesliKonumu-1})){
$hece=substr($sozcuk,$enSagdakiSesliKonumu);
}
/** en sagdaki seslinin solundaki harf sessiz ise o zaman heceyi bu sessizden ayir*/
else{
$hece=substr($sozcuk,$enSagdakiSesliKonumu-1);
}

$k=strlen($hece);
$yeniSozcuk=substr($sozcuk,0,-$k);
$this->heceDizisi[$sira][]=$hece;
/** olusan heceyi attiktan sonra kalan kelimeyle basa dön*/
return $this->_hecele($yeniSozcuk,$sira);
}

function _enSagdakiniBul($kelime,$arananlar){
$u=strlen($kelime);
for($i=$u-1;$i>=0;$i--){
if(in_array($kelime{$i},$arananlar))
return $i;
}
return null;
}
function _seslimi($harf){
return in_array($harf,$this->sesliler);
}

function _sesliVarmi($kelime){
$u=strlen($kelime);
for($i=0;$i<$u;$i++){
if($this->_seslimi($kelime{$i}))
return true;
}
return false;
}
}

//KULLANIMI :
$metin="PHP İçin En Yararlı Türkçe Kaynak";
$h=new hececi();
$h->hecelereAyir($metin);
echo $h->heceliYazdir();
?>



Yorumlar
Henüz Kimse Yorum Yapmamış, ilk yorumu siz ekleyin!
Yorum Ekleme Aparatı
Yorum Eklemek için lütfen sol menuden giris yapınız..
Toplam 0 yorum listelendi.