Guest User

Kelime heceleme, iyelik eki verme

a guest
May 4th, 2010
3,655
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function hecele($kelime, $diziOlarakDondur=false, $hecele=false) {
  2.     $sessiz     = "[bcçdfgğhjklmnprsştvyz]";
  3.     $sesli      = "[aeıioöuü]";
  4.  
  5.     $kelime = preg_replace('/[^a-zA-ZığüşçöİĞÜŞÇÖ]/ui', '', $kelime);
  6.  
  7.     $kelime = preg_replace("/({$sessiz}+)({$sessiz}+)(?={$sesli})/ui", "\\1-\\2", $kelime);
  8.  
  9.     $bol = explode('-', $kelime);
  10.     for($i=0; $i<count($bol); $i++) {
  11.         $bol[$i] = strlen($bol[$i])>3 ? preg_replace("/({$sesli}+)({$sessiz}+)(?={$sesli}+)/ui", "\\1-\\2\\3", $bol[$i]) : $bol[$i];
  12.     }
  13.  
  14.     if($diziOlarakDondur===true && $hecele===false) {
  15.         $bol = implode('-', $bol);
  16.         return explode("-", $bol);
  17.     } else {
  18.         return implode('-', $bol);
  19.     }
  20. }
  21.  
  22. function iyelikEkle($kelime) {
  23.     $hece = hecele($kelime, true);
  24.     $sonHece = $hece[count($hece)-1];
  25.  
  26.     $kalinSesli = "aıou";
  27.     $inceSesli = "eiöü";
  28.     $sonHarf = ord(substr($sonHece, -1)) > 122 ? substr($sonHece, -2) : substr($sonHece, -1);
  29.     $ek = "";
  30.  
  31.     if(preg_match("/[{$kalinSesli}{$inceSesli}]+/ui", $sonHarf)) {
  32.         //Son harf sesli
  33.         switch($sonHarf) {
  34.             case "a":
  35.             case "A":
  36.             case "I":
  37.             case "ı":
  38.                 $ek = "nın";
  39.                 break;
  40.             case "e":
  41.             case "E":
  42.             case "i":
  43.             case 'İ':
  44.                 $ek = "nin";
  45.                 break;
  46.             case "o":
  47.             case "O":
  48.             case "u":
  49.             case "U":
  50.                 $ek = "nun";
  51.                 break;
  52.             case "ö":
  53.             case "Ö":
  54.             case "ü":
  55.             case 'Ü':
  56.                 $ek = "nün";
  57.                 break;
  58.         }
  59.     } else {
  60.         //Son harf sessiz
  61.         if(preg_match("/[aı]+/ui", $sonHece)) {
  62.             $ek = 'ın';
  63.         } elseif(preg_match("/[ei]+/ui", $sonHece)) {
  64.             $ek = 'in';
  65.         } elseif(preg_match("/[ou]+/ui", $sonHece)) {
  66.             $ek = 'un';
  67.         } elseif(preg_match("/[öü]+/ui", $sonHece)) {
  68.             $ek = 'ün';
  69.         }
  70.     }
  71.  
  72.     // Büyük İ karakterinde çıkan sorun için bu satır kalmalı
  73.     $ek = empty($ek) ? 'nin' : $ek;
  74.     return implode('', $hece).'\''.$ek;
  75. }
  76.  
  77. function cumleHecele($cumle, $diziOlarakDondur=false) {
  78.     $bol = explode(' ', $cumle);
  79.     $sonuc = array();
  80.    
  81.     foreach($bol as $kelime) {
  82.         $sonuc[] = hecele($kelime, $diziOlarakDondur);
  83.     }
  84.  
  85.     return(implode(' ', $sonuc));
  86. }
  87.  
  88. //print_r(cumleHecele('isimlerin son hecelerine göre sonuna eklenecek takıyı belirleyen bir fonksiyon var mıdır? örn: Ahmet`in Osman`ın gibi sondaki "ın" "in" takılarını öncesinde gelen isme yada ismin son hecesine göre otomatik getiren bir yapı.', true));
  89.  
  90. //print_r(hecele("fanatikleştirebildiklerimizdenmisiniz", true));
  91.  
  92. echo(iyelikEkle("Malik"));
RAW Paste Data