PHP Programlamada İsimden Sonra Dilbilgisine Uygun Ek Getirme

Ben php dilinde ismi okumayı ve uygun ek getirmeyi ilk kez Facebook’ta gördüm. Ve Degre ile bunun bi tartışmasını yapmıştık nasıl yapılır edilir diye.

Sonuçta benim bugün böyle bir ihtiyacım oluştu ve programı yazabildim. Lütfen eklemede sorun yaşarsanız yorumda belirtin ki kodu kusursuzlaştıralım.

Ayrıca bu kadar Türk sitesi varken böyle bir uygulamanın ilk kez facebook’ta olması ilginç tabii (Ya da ben ilk facebookta gördüm). Bizim Türkler zekice bundan böyle sıyrılıyor:

Facebook’ta: Ahmet ‘de Mehmet‘in fotoğrafına yorum yaptı.
Kaçamaklı-1: Ahmet isimli üye Mehmet isimli üyenin fotoğrafına yorum yaptı.
Kaçamaklı-2: Ahmet, Mehmet isimli üyenin fotoğrafına yorum yaptı.

Gibi bu liste uzayıp gider. Ancak şunu belirtmek isterim Türkçe hiç bir kelimenin sonunda 2 tane sesli harf yoktur. Dolayısı ile yazılmış olan bu programda denemee yazdığınızda denemee‘nin yerine denemee’inin çıktısını alırsınız.

Umarım bu tarz bir programlama bizim vesilemizle web sitelerinde kullanılmaya başlanır ve klasik otomatik mesajlar yerine yazıyı veya isminizi okuyabilen (bir nevi yapay zeka) daha insansı programlar görürüz.

Bu program çok uzun kodlara sahip! Bu kodları azaltıp daha iyi geliştirecek arkadaşları da bizim gibi kodlarını paylaşmaya davet ediyorum.

İlk Versiyonda sert ünsüz ve yumuşak ünsüzleri ayırt edemiyor ve tam anlamıyla doğru değil.
Versiyon “1” Kodlar:

<?php
$uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim'];
$dilbilgisi_icin_son_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) -1));
// -1 olması son karakteri çağırıyor
$dilbilgisi_icin_sondan_ikinci_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) - 2, 1));
// -2 son ikisi açıklama
$sondan_4uncu_karakteri_cagir = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) -4, 1));
// -4 olması son 4 karakteri çağırıyor , 1 olması kesilen kelimenin baş harfini alıyor
$dorduncu_harfler_bu_mu = array(e, v);
if (in_array($sondan_4uncu_karakteri_cagir, $dorduncu_harfler_bu_mu)){
$dilbilgisi_son_karakter_icin = array( "a"=>"nın",
"b"=>"n",
"c"=>"n",
"ç"=>"n",
"d"=>"n",
"e"=>"nin",
"f"=>"n",
"g"=>"n",
"ğ"=>"n",
"Ğ"=>"n",
"h"=>"n",
"ı"=>"nın",
"i"=>"nin",
"I"=>"nın",
"İ"=>"nin",
"j"=>"n",
"k"=>"n",
"l"=>"n",
"m"=>"n",
"n"=>"n",
"o"=>"nun",
"ö"=>"nün",
"Ö"=>"nün",
"p"=>"n",
"r"=>"n",
"s"=>"n",
"ş"=>"n",
"Ş"=>"n",
"t"=>"n",
"u"=>"nun",
"ü"=>"nün",
"Ü"=>"nün",
"v"=>"n",
"y"=>"n",
"z"=>"n");
$dilbilgisi_sondan_ikinci_karakter_icin = array(
"b"=>"",
"c"=>"",
"ç"=>"",
"d"=>"",
"f"=>"",
"g"=>"",
"ğ"=>"",
"ğ"=>"",
"h"=>"",
"j"=>"",
"k"=>"",
"l"=>"",
"m"=>"",
"n"=>"",
"p"=>"",
"r"=>"",
"s"=>"",
"ş"=>"",
"t"=>"",
"v"=>"",
"y"=>"",
"z"=>"",
"a"=>"i", // önemli
"e"=>"i",
"ı"=>"ı",
"İ"=>"i",
"i"=>"i",
"o"=>"u",
"ö"=>"ü",
"Ö"=>"ü",
"u"=>"u",
"ü"=>"ü",
"Ü"=>"ü");
} else {
$dilbilgisi_son_karakter_icin = array(
"a"=>"nın",
"b"=>"n",
"c"=>"n",
"ç"=>"n",
"d"=>"n",
"e"=>"nin",
"f"=>"n",
"g"=>"n",
"ğ"=>"n",
"Ğ"=>"n",
"h"=>"n",
"ı"=>"nın",
"i"=>"nin",
"I"=>"nın",
"İ"=>"nin",
"j"=>"n",
"k"=>"n",
"l"=>"n",
"m"=>"n",
"n"=>"n",
"o"=>"nun",
"ö"=>"nün",
"Ö"=>"nün",
"p"=>"n",
"r"=>"n",
"s"=>"n",
"ş"=>"n",
"Ş"=>"n",
"t"=>"n",
"u"=>"nun",
"ü"=>"nün",
"Ü"=>"nün",
"v"=>"n",
"y"=>"n",
"z"=>"n");
$dilbilgisi_sondan_ikinci_karakter_icin = array(
"b"=>"",
"c"=>"",
"ç"=>"",
"d"=>"",
"f"=>"",
"g"=>"",
"ğ"=>"",
"ğ"=>"",
"h"=>"",
"j"=>"",
"k"=>"",
"l"=>"",
"m"=>"",
"n"=>"",
"p"=>"",
"r"=>"",
"s"=>"",
"ş"=>"",
"t"=>"",
"v"=>"",
"y"=>"",
"z"=>"",
"a"=>"ı", // önemli
"e"=>"i",
"ı"=>"ı",
"İ"=>"i",
"i"=>"i",
"o"=>"u",
"ö"=>"ü",
"Ö"=>"ü",
"u"=>"u",
"ü"=>"ü",
"Ü"=>"ü");
}

$son_karakter_belirlendi_ve_yazildi = strtr($dilbilgisi_icin_son_karakter,$dilbilgisi_son_karakter_icin);

$sondan_ikinci_karakter_belirlendi_ve_yazildi = strtr($dilbilgisi_icin_sondan_ikinci_karakter,$dilbilgisi_sondan_ikinci_karakter_icin);
$kesmeden_sonrasini_artik_birlestir_yeter = "'$sondan_ikinci_karakter_belirlendi_ve_yazildi
$son_karakter_belirlendi_ve_yazildi";
echo "$dorduncu_harfler$uye_ismi_cagir<b>$kesmeden_sonrasini_artik_birlestir_yeter</b>";
?>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
İsimden Sonra Dilbilgisine Uygun Ek Getirme</pre>
<form enctype="multipart/form-data" method="get" name="myform" onsubmit="uploadbutton.disabled=true;">
<input type="text" name="cevirilicek_isim" value="<? $uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim']; echo " />"  size="34">
<input type="submit" size="20" value="Uygun EK getir" /></form>
<span style="font-family: Verdana; font-size: small;">Bu uygulama Türkçe isimlere kesme işaretinden
sonra dilbilgisine uygun şekilde ek getirmeye yarar.
<span style="font-family: Verdana; font-size: small;"><b>Kodlama:</b> <a href="http://www.metinyavuz.com.tr">Metin YAVUZ</a></span>

Versiyon 2

İkinci Versiyonda sert ünsüz ve yumuşak ünsüzleri ayırt ediyor ve şu ana kadar benim aklıma gelen çoğu Türkçe kelimeye doğru ekleme yapabiliyor. Eğer yapamadığını görürseniz lütfen yorum yazın! 😀

Versiyon “2” Kodlar:


< ?
$uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim'];
$son_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) -1));
// -1 olması son karakteri çağırıyor
$sondan_ikinci_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) - 2, 1));
// -2 son ikisi açıklama http://tr2.php.net/substr
$sondan_ucuncu_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) - 3, 1));
$sondan_dorduncu_karakter = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) -4, 1));
// -4 olması sondan 4üncü karakteri çağırıyor
$sondan_dortluk = strtolower(substr($uye_ismi_cagir, strlen($uye_ismi_cagir) -4));
// -4 olması son 4 karakteri çağırıyor

$sert_sessizler = array(ğ,p,c,ç,Ç,t,k,f,s,ş,Ş,s,h); // ın olacaklar
$yumusak_sessizler = array(b,c,d,g,h,j,l,m,n,p,r,v,y,z); //in olacaklar

$kalin_sesliler_1 = array(a,ı); // ın, nın olacaklar
$kalin_sesliler_2 = array(o,u); // un, nun olacaklar
$ince_sesliler_1  = array(ö,ü,Ü); // ün, nün olacaklar
$ince_sesliler_2  = array(e,i,İ); // in, nin olacaklar

$a_yumusamaya_ugrayanlar  = array(emal); // kemal'in, cemal'in yumuşatması

// SESLİ HARFLE BİTİŞLER
if (in_array($son_karakter, $kalin_sesliler_1)){
$son_ek = "nın";
}
elseif (in_array($son_karakter, $kalin_sesliler_2)){
$son_ek = "nun";
}
elseif (in_array($son_karakter, $ince_sesliler_1)){
$son_ek = "nün";
}
elseif (in_array($son_karakter, $ince_sesliler_2)){
$son_ek = "nin";
}
// SESSİZ HARFLE BİTİŞLER
elseif (in_array($sondan_dortluk, $a_yumusamaya_ugrayanlar) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ucuncu_karakter, $ince_sesliler_2)||
in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $ince_sesliler_2)||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $ince_sesliler_2)){
$son_ek = "in";
}
elseif (in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter,$ince_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter,$kalin_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter, $kalin_sesliler_1) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter, $kalin_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter, $ince_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;amp;&amp;amp;amp; in_array($sondan_dorduncu_karakter, $yumusak_sessizler) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1)
){
$son_ek = "ın";
}

elseif (in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_2)){
$son_ek = "un";
}
elseif (in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $ince_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $yumusak_sessizler) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;amp;&amp;amp;amp; in_array($sondan_ikinci_karakter, $ince_sesliler_1)){
$son_ek = "ün";
}
else {
$son_ek = "";
}

$yeter_ya = "'$sondan_iki_onceki_ek$sondan_bir_onceki_ek$son_ek";
echo "$uye_ismi_cagir<b>$yeter_ya";
?>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
İsimden Sonra Dilbilgisine Uygun Ek Getirme
</b></pre>
<form enctype="multipart/form-data" method="get" name="myform" onsubmit="uploadbutton.disabled=true;">
<input type="text" name="cevirilicek_isim" value="<? $uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim']; echo " />"  size="34">
<input type="submit" size="20" value="Uygun EK getir" /></form>
<pre><b>

<span style="font-family: Verdana; font-size: small;">Bu uygulama Türkçe isimlere kesme işaretinden
sonra dilbilgisine uygun şekilde ek getirmeye yarar.</span>

<span style="font-family: Verdana; font-size: small;"><b>Kodlama:</b> <a href="http://www.metinyavuz.com.tr">Metin YAVUZ</a></span>

DAHA FAZLA İÇERİK

Çikolata Üreten 3D Yazıcı Çikolata Üreten 3D Yazıcı

21 Ocak 2015, Çarşamba

SİZDE YORUM YAPIN