Php ile in-un (iyelik eki) fonksiyonu
Örnek:
Ali’nin
Ayşe’nin
Cengiz‘in
Fatma’nın
Sistem de karakter problemi var, en kısa süre de çözerim herale.. (:
$kelime = preg_replace('/[^a-zA-Z??ü?çö??Ü?ÇÖ]/ui', '', $kelime);
$kelime = preg_replace("/({$sessiz}+)({$sessiz}+)(?={$sesli})/ui", "\1-\2", $kelime);
$bol = explode('-', $kelime);
for($i=0; $i3 ? preg_replace("/({$sesli}+)({$sessiz}+)(?={$sesli}+)/ui", "\1-\2\3", $bol[$i]) : $bol[$i];
}
if($diziOlarakDondur===true && $hecele===false) {
$bol = implode('-', $bol);
return explode("-", $bol);
} else {
return implode('-', $bol);
}
}
function iyelikEkle($kelime) {
$hece = hecele($kelime, true);
$sonHece = $hece[count($hece)-1];
$kalinSesli = "a?ou";
$inceSesli = "eiöü";
$sonHarf = ord(substr($sonHece, -1)) > 122 ? substr($sonHece, -2) : substr($sonHece, -1);
$ek = "";
if(preg_match("/[{$kalinSesli}{$inceSesli}]+/ui", $sonHarf)) {
//Son harf sesli
switch($sonHarf) {
case "a":
case "A":
case "I":
case "?":
$ek = "n?n";
break;
case "e":
case "E":
case "i":
case '?':
$ek = "nin";
break;
case "o":
case "O":
case "u":
case "U":
$ek = "nun";
break;
case "ö":
case "Ö":
case "ü":
case 'Ü':
$ek = "nün";
break;
}
} else {
//Son harf sessiz
if(preg_match("/[a?]+/ui", $sonHece)) {
$ek = '?n';
} elseif(preg_match("/[ei]+/ui", $sonHece)) {
$ek = 'in';
} elseif(preg_match("/[ou]+/ui", $sonHece)) {
$ek = 'un';
} elseif(preg_match("/[öü]+/ui", $sonHece)) {
$ek = 'ün';
}
}
// Büyük ? karakterinde ç?kan sorun için bu sat?r kalmal?
$ek = empty($ek) ? 'nin' : $ek;
return implode('', $hece).'''.$ek;
}
function cumleHecele($cumle, $diziOlarakDondur=false) {
$bol = explode(' ', $cumle);
$sonuc = array();
foreach($bol as $kelime) {
$sonuc[] = hecele($kelime, $diziOlarakDondur);
}
return(implode(' ', $sonuc));
}
//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));
//print_r(hecele("fanatikle?tirebildiklerimizdenmisiniz", true));
echo(iyelikEkle("Malik"));
Ayrıca şöye bir linkte’de şöyle bir function paylaşılmış
// ismin nikneymin sonuna iyelik eki ekler
function iyelik($ad)
{
$buyuk = array("A", "I", "E", "İ", "U","O", "Ü", "Ö");
$kucuk = array("a", "ı", "e", "i", "u","o", "ü", "ö");
$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
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";}
//isimde hiç sesli harf yoktur beki diye sağlama alıyoruz.
// zaten böyle nikneym olmaz olsun.
// aşağıdaki ikisinden hangisi imantıklı geliyorsa onu uncomment edin
else {$eki="'ın";}
//else {$eki=" isimli üyenin";}
/// Ahmet'in, Bengü'nün, Lost_Boy'un şeklinde yazılıyor
$sonuc= $ad.$eki;
return $sonuc;
}
Leave a Reply
Want to join the discussion?Feel free to contribute!