Skip to content

Instantly share code, notes, and snippets.

@kemalaydin
Created August 2, 2014 21:34
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kemalaydin/55dbb85fbf44a3021783 to your computer and use it in GitHub Desktop.
Save kemalaydin/55dbb85fbf44a3021783 to your computer and use it in GitHub Desktop.
İyelik Eki Algoritması ( Ali'den, Fatma'dan )
<?php
function isimeki($ad, $ektipi= "in")
{
$sertsessizler = array("ç", "f", "h", "k", "p","s", "ş", "t");
/// türkçe sesli ve sert sessiz karakterler
$buyuk = array("A", "I", "E", "İ", "U","O", "Ü", "Ö", "Ç", "F", "H", "K", "P","S", "Ş", "T");
$kucuk = array("a", "ı", "e", "i", "u","o", "ü", "ö", "ç", "f", "h", "k", "p","s", "ş", "t");
$kucultulmus = str_replace($buyuk, $kucuk, $ad);
$isim=trim($kucultulmus);
$sonharf = substr($isim, -1); // isimdeki son karakteri bulduk
/// aşağıdaki kısım regexp ile son sesli harfi buluyor.
/// bugcheck şeysi regexp özürlü turkce harfleri adam etmek için.
$bugcheckkaynak = array("ı", "ö", "ü");
$bugcheckhedef = array("a", "`", "`");
$bugfixed=str_replace($bugcheckkaynak, $bugcheckhedef, $isim);
preg_match_all('/[aeiou`]/', $bugfixed, $bulunanlar);
$sesliler=$bulunanlar[0];
$sonsesli=end($sesliler); //isimdeki son sesli harfi bulduk
switch ($ektipi) {
case "in": //iyelik eki -> Ahmet'in
if ($sonharf=="a" or $sonharf=="ı") {$eki="'nın";}
elseif ($sonharf=="e" or $sonharf=="i") {$eki="'nin";}
elseif ($sonharf=="u" or $sonharf=="o") {$eki="'nun";}
elseif ($sonharf=="ü" or $sonharf=="ö") {$eki="'nün";}
elseif ($sonsesli=="a" or $sonsesli=="ı") {$eki="'ın";}
elseif ($sonsesli=="e" or $sonsesli=="i") {$eki="'in";}
elseif ($sonsesli=="u" or $sonsesli=="o") {$eki="'un";}
elseif ($sonsesli=="`" ) {$eki="'ün";}
else {$eki="'ın";}
break;
case "e": // ismin e hali -> Ahmet'e
if ($sonharf=="a" or $sonharf=="ı" or $sonharf=="u" or $sonharf=="o") {$eki="'ya";}
elseif ($sonharf=="e" or $sonharf=="i" or $sonharf=="ü" or $sonharf=="ö") {$eki="'ye";}
elseif ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") {$eki="'a";}
elseif ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ö" or $sonsesli=="ü") {$eki="'e";}
else {$eki="'a";}
break;
case "i": // ismin i hali -> Ahmet'i
if ($sonharf=="a" or $sonharf=="ı") {$eki="'yı";}
elseif ($sonharf=="e" or $sonharf=="i") {$eki="'yi";}
elseif ($sonharf=="u" or $sonharf=="o") {$eki="'yu";}
elseif ($sonharf=="ü" or $sonharf=="ö") {$eki="'yü";}
elseif ($sonsesli=="a" or $sonsesli=="ı") {$eki="'ı";}
elseif ($sonsesli=="e" or $sonsesli=="i") {$eki="'i";}
elseif ($sonsesli=="u" or $sonsesli=="o") {$eki="'u";}
elseif ($sonsesli=="`" ) {$eki="'ü";}
break;
case "de": // ismin de hali -> Ahmet'te / Ayşe'de
if ($sonharf=="a" or $sonharf=="ı" or $sonharf=="u" or $sonharf=="o") {$eki="'da";}
elseif ($sonharf=="e" or $sonharf=="i" or $sonharf=="ü" or $sonharf=="ö") {$eki="'de";}
elseif (in_array($sonharf, $sertsessizler) and ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") ) {$eki="'ta";}
elseif (in_array($sonharf, $sertsessizler) and ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ü" or $sonsesli=="ö") ) {$eki="'te";}
elseif ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") {$eki="'da";}
elseif ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ü" or $sonsesli=="ö") {$eki="'da";}
elseif (in_array($sonharf, $sertsessizler)) {$eki="'ta";}
else {$eki="'da";}
break;
case "den": // ismin de hali -> Ahmet'ten / Ayşe'den
if ($sonharf=="a" or $sonharf=="ı" or $sonharf=="u" or $sonharf=="o") {$eki="'dan";}
elseif ($sonharf=="e" or $sonharf=="i" or $sonharf=="ü" or $sonharf=="ö") {$eki="'den";}
elseif (in_array($sonharf, $sertsessizler) and ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") ) {$eki="'tan";}
elseif (in_array($sonharf, $sertsessizler) and ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ü" or $sonsesli=="ö") ) {$eki="'ten";}
elseif ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") {$eki="'dan";}
elseif ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ü" or $sonsesli=="ö") {$eki="'dan";}
elseif (in_array($sonharf, $sertsessizler)) {$eki="'tan";}
else {$eki="'dan";}
break;
case "ile": // beraberlik hali -> Ayşeyle / Ahmetle
if ($sonharf=="a" or $sonharf=="ı" or $sonharf=="u" or $sonharf=="o") {$eki="yla";}
elseif ($sonharf=="e" or $sonharf=="i" or $sonharf=="ü" or $sonharf=="ö") {$eki="yle";}
elseif ($sonsesli=="a" or $sonsesli=="ı" or $sonsesli=="u" or $sonsesli=="o") {$eki="la";}
elseif ($sonsesli=="e" or $sonsesli=="i" or $sonsesli=="ö" or $sonsesli=="ü") {$eki="le";}
else {$eki="'la";}
break;
}
$sonuc= $ad.$eki;
return $sonuc;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment