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 Dinçer’le bunun bi tartışmasını yapmıştık nasıl yapılır edilir diye
Ben php dilinde ismi okumayı ve uygun ek getirmeyi ilk kez Facebook’ta gördüm. Ve Dinçer’le 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 V1 Demosu için tıklayınız.
Versiyon “1″ Kodlar:
< ?
$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 http://tr2.php.net/substr
$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>";
?>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>İsimden Sonra Dilbilgisine Uygun Ek Getirme</title></meta></head><body>
<form method="get" enctype="multipart/form-data" onSubmit="uploadbutton.disabled=true;" name=myform>
<input type="text" name="cevirilicek_isim" value="<? $uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim'];
echo "$uye_ismi_cagir";?/>" size="34">
<input type="submit" value="Uygun EK getir" size="20"/></form>
<p><font face="Verdana" size="2">Bu uygulama Türkçe isimlere kesme işaretinden
sonra dilbilgisine uygun şekilde ek getirmeye yarar.<br /><a HREF="http://www.mondaynay.com/2008/09/php-programlamada-isimden-sonra-dilbilgisine-uygun-ek-getirme/"><b>Daha detaylı bilgi</b></a></font></p>
<p><font face="Verdana" size="2"><b>Kodlama:</b> <a HREF="http://www.metinyavuz.com.tr">Metin YAVUZ</a></font></p>
</body></html>
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! :D
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; in_array($sondan_ikinci_karakter, $yumusak_sessizler) &amp;amp;&amp;amp; in_array($sondan_ucuncu_karakter, $ince_sesliler_2)||
in_array($son_karakter, $sert_sessizler) &amp;amp;&amp;amp; in_array($sondan_ikinci_karakter, $ince_sesliler_2)||
in_array($son_karakter, $yumusak_sessizler) &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; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter,$ince_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;&amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter,$kalin_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;&amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter, $kalin_sesliler_1) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter, $kalin_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter, $ince_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &amp;amp;&amp;amp; in_array($sondan_ikinci_karakter, $kalin_sesliler_1) &amp;amp;&amp;amp; in_array($sondan_dorduncu_karakter, $yumusak_sessizler) ||
in_array($son_karakter, $yumusak_sessizler) &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; in_array($sondan_ikinci_karakter, $kalin_sesliler_2) ||
in_array($son_karakter, $yumusak_sessizler) &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; in_array($sondan_ikinci_karakter, $ince_sesliler_1) ||
in_array($son_karakter, $sert_sessizler) &amp;amp;&amp;amp; in_array($sondan_ikinci_karakter, $yumusak_sessizler) ||
in_array($son_karakter, $yumusak_sessizler) &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";
?>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>İsimden Sonra Dilbilgisine Uygun Ek Getirme</title></meta></head><body>
<form method="get" enctype="multipart/form-data" onSubmit="uploadbutton.disabled=true;" name=myform>
<input type="text" name="cevirilicek_isim" value="<? $uye_ismi_cagir = $HTTP_GET_VARS['cevirilicek_isim'];
echo "$uye_ismi_cagir";?/>" size="34">
<input type="submit" value="Uygun EK getir" size="20"/></form>
<p><font face="Verdana" size="2">Bu uygulama Türkçe isimlere kesme işaretinden
sonra dilbilgisine uygun şekilde ek getirmeye yarar.<br /><a HREF="http://www.mondaynay.com/2008/09/php-programlamada-isimden-sonra-dilbilgisine-uygun-ek-getirme/"><b>Daha detaylı bilgi</b></a></font></p>
<p><font face="Verdana" size="2"><b>Kodlama:</b> <a HREF="http://www.metinyavuz.com.tr">Metin YAVUZ</a></font></p>
</body></html>
Benzer Yazılar
Şu anda okuduğunuz konuyu beğendiniz mi? Bizce aşağıdaki konularda en az bu konu kadar ilginizi çekecek.
- PHP kodlarken AJAX’la oluşan Türkçe Karakter Sorunu
- Php Temel Bilgiler: Veri Tipleri
- Php Temel Bilgiler: Sabitler
- Php Temel Bilgiler: PHP ile Merhaba Dünya
- PHP ile basit iletişim formu yapmak (Türkçe Karakter Sorunsuz)
- Md5 Nedir? Php’de Md5 Şifreleme nasıl yapılır?
- Php Temel Bilgiler: Değişkenler
- Php'ye Giriş
- Php Temel Bilgiler: Php İmlerinin Kullanımı
- Php Temel Bilgiler: PHP’de Açıklamalar












