evet istisnaları da düşünürsek eğer büyük bir fonksiyon olur![]()
evet istisnaları da düşünürsek eğer büyük bir fonksiyon olur![]()
Sanırım bir if ve ünlüler gösterilerek sorun çok rahat çözülür.
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
Şimdi sorun aslında Türkçe'nin sondan eklemeli yapısında.
Dilbilimsel açıdan kural şudur:
3. Tekil şahıs, kelimenin en son sesli harfine göre iylik eki alır.
Ben sondan bir önceki karaktere kadar gittmiştim. Else if le geriye doğru devam edilebilir istediğimiz kadar. Sondan 3. karakteri de eklersek Mert'i de kapsar.
Hatta abartıp sondan dördüncü karakteri de ekledim şöyle oldu:
(Ad değil Mert Merkt bile olsa çalışır bu haliyle)
(istersen 4. beşinci karaktere kadar gitmek mümkün)PHP Kodu:// 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); // son karakter
$oncekiharf = substr($isim, -2, 1); // sondan bir önceki karakter
$ikioncekiharf = substr($isim, -3, 1); // sondan iki önceki karakter
$ = substr($isim, -4, 1); // sondan uc önceki karakter
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 ($oncekiharf=="a" or $oncekiharf=="ı") {$eki="'ın";}
elseif ($oncekiharf=="e" or $oncekiharf=="i") {$eki="'in";}
elseif ($oncekiharf=="u" or $oncekiharf=="o") {$eki="'un";}
elseif ($oncekiharf=="ü" or $oncekiharf=="ö") {$eki="'ün";}
elseif ($ikioncekiharf =="a" or $oncekiharf=="ı") {$eki="'ın";}
elseif ($ikioncekiharf =="e" or $oncekiharf=="i") {$eki="'in";}
elseif ($ikioncekiharf =="u" or $oncekiharf=="o") {$eki="'un";}
elseif ($ikioncekiharf =="ü" or $oncekiharf=="ö") {$eki="'ün";}
elseif ($uconcekiharf =="a" or $oncekiharf=="ı") {$eki="'ın";}
elseif ($uconcekiharf =="e" or $oncekiharf=="i") {$eki="'in";}
elseif ($uconcekiharf =="u" or $oncekiharf=="o") {$eki="'un";}
elseif ($uconcekiharf =="ü" or $oncekiharf=="ö") {$eki="'ün";}
else {$eki=" isimli üyenin";} //Gerek yok belki ama işimizi sağlama alıyoruz
/// Ahmet'in, Bengü'nün, Lost_Boy'un şeklinde yazılıyor
$sonuc= $ad.$eki;
return $sonuc;
}
Sanırım bu işe yarar.
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
=>KemâlKemal'ın mı yoksa Kemal'in mi olmalı?
benzer durum
Gol kelimesinde o harfi inceltme işareti almazken ince okunur (futboldaki gol)
Bu arada Etyka, yaptığın çalışma gerçekten takdire şayan sakın yermek için yazdığımı sanma. Çok sevdiğim bir konu olduğu için sormadan duramıyorum.
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
Yok ya ne alınıcam rica ederimKelimenin en son sesli harfini direk bulup if else basmasak daha mantıklı olur tabi . Ama kelimenin en son harfi istisna duruma sahip.
Çünkü eğer en son harf sesliyse ve misal e harfiyse in değil nin eki alıyor. Sadece son sesli harfi bulursak ve mesela son sesli harf ü ise nün mü yoksa ün mü yazdıracağımız karışıyor.
O yüzden biraz da mecburen harf harf geriye gittim
Bu arada yukarıdaki son halinde gözümden kaçmış:
yerine aşağıdaki olması lazım tabi.PHP Kodu:$= substr($isim, -4, 1); // sondan uc önceki karakter
PHP Kodu:$uconcekiharf = substr($isim, -4, 1); // sondan uc önceki karakter
İsim ya da isim işlevindeki kelime ya da kelime grubu ünsüz ile bitiyorsa ek +In* şeklinde gelir. Eğer ünlü ile bitiyorsa +nIn şeklinde eklenir.
Eğer kelimenin hece yapısı KVKK (Mert) ya da VKK (Alp) (K[konsonant] = ünsüz V[vokal] = ünlü) ise bu durumda en sondaki ünlü aranıp buna göre bu eklerden birisi gelir.
Saat, Kemal, gol gibi istisnaların -ki bunlar yabancı kökenli Türkçe kelimelerdir - yazılacak uygulamaya ayrıca tanıtılması gerekir.
* burada +In ekin +In, +İn, +Un, +Ün şekilleri anlamında
Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.
Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.
Gittikçe gelişiyor, çok kişinin işine yarayacaktır.
Paylaştığın ve emeğin için tekrar teşekkürler Etyka.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks