@brkrtp; Çok teşekkür ediyorum çok sağ ol
Küçük harf tekrarlama vs gibi sorunların hepsi giderildi. Demo: http://trteamspeak.com/deneme.php
//// Kelimelerdeki türkçe harfleri kaldırıyoruz ki sayım daha net yapılsın
function replace_tr($text) {
$text = trim($text);
$search = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü');
$replace = array('c','c','g','g','i','i','o','o','s','s','u','u');
$new_text = str_replace($search,$replace,$text);
return $new_text;
}
/// yazıdaki noktalamalarıda kaldırıyoruz ki noktaları kelimeden saymasın.
function noktalama($text) {
$text = trim($text);
$search = array('.',',',':',';','!','?');
$replace = array('','','','','','');
$new_text = str_replace($search,$replace,$text);
return $new_text;
}
if (!empty($_POST["alan"])){
//// alan postu boş gönderilmediyse
/// ilk yazı değişkeninde noktalama kaldırıyoruz ingilizceye dönüştürüyoruz ve küçük harf dönüştürüyoruz ki harflerin hiçbir şekilde ayrımını yapmasın
$yazi=strtolower(replace_tr(noktalama($_POST['alan'])));
$yazi2=$_POST['alan'];
/// yazı2 değişkeninide değiştirmeden cümleniz budur diye cıktı vermek için kullanıyoruz.
/// gelen veri yazi değişkeninde
$parcala = explode(" ", $yazi);
/// diziye aktardık
$cevir=count($parcala);
/// dizi eleman sayısını bulduk
for ($i = 0; $i < $cevir; $i++) {
$parcala[$i]=trim($parcala[$i]);
/// Dizi elaman sayısı adedince döngü döndürdük
$say = preg_match_all('/'.$parcala[$i].'/',$yazi,$ne);
/// dizideki her bir elemanın cümlede kaç tane olduğunu saydırdım ve $ne değişkenine aktardım
///$harf değişkeni ile kelimelerin sayıları aynı geldiğinde silmemesi için kelimenin ilk 3 karakterinide kelimenin kaç defa geçtiği diziye yazdım
$harf=substr($parcala[$i] , 0,3);
$kactanevar[$i]=$harf.count($ne[0]);
//// $ne[0] değişkeni cümlede kaç tane oldugunu belirtir ve cevabı $kactanevar diye dizi oluşturup ona attım.
//// Sonuc olarak eleman adedince 2 dizim oldu ve parcala değişkenimin birinci elamanı $kactanevar değişkenimin birinci elemanına denk geldi
//// $kactanevar değişkeninde kelimenin sayısını tuttum $parcala değişkenindede kelimeleri
}
echo 'Cümle:'.$yazi2.'
';
/// Gelen cümleyi normal yazdırıyorum
///// Aynı elemanları silelim array_unique ile siliyoruz. array_values ile değerlerini alıyoruz
$sparcala = array_values(array_unique($parcala));
$skactane = array_values(array_unique($kactanevar));
//print_r($skactane);
$say=count($sparcala);
/// aynı değerler silindiği için dizimizin yeni eleman degerini say değişkenine atıyorum
for ($a = 0; $a < $say; $a++) {
$ksay=strlen($skactane[$a]);
//// $ksay değişkeninde kelimenin kaç tane karakteri oldugunu buldum. Çünkü ilk 3 harfi kelimenin ilk 3 harfini içeriyor sonraki harfler ise sayısını belirtiyor.
$cc=substr($skactane[$a] , 3,$ksay);
/// $cc değişkenindede ilk 3 kodu gizliyorum ve cıkacak sayıyı ekrana bastıyorum tamamını değil.
/// Eleman adedince tekrar döngüye sokuyorum
echo $sparcala[$a].'('.$cc.')';
//// Artan değer $a değişkeni
//// $parcala değişkenimde kelimeleri tutuyordum yanınada $kactanevar yani saydırdıgım değeri yazdırıyorum.
}
}
?>