
Kelime veya harf sayma
Metin içerisindeki bir kelimenin kaç tane olduğunu bulmanın birden çok yöntemi var. PHP' nin bu konuda kendi içerisinde yerleşik bir metoduda bulunmakta
substr_count($haystack, $needle)
substr_count metotdu iki parametre almaktadır bunun haricindede 2 tanede opsiyonel parametresi ile toplamda 4 parametre alır.
php.net http://tr2.php.net/manual/en/function.substr-count.php adresinden daha detaylı bakabilirsiniz.
-
parametre içerisinde arama yapmak istediğiniz karakter grubunu alır
-
parametre saymak istediğiniz karakter katarını alır.
Örnek
<?php
echo substr_count($bununicinde, $bundankactanevar);
?>
php.net sitesinde aranılacak kelimenin küçük harf duyarlı olduğunu belirtiyor, bize daha farklı büyük küçük harfe duyarsız olup kelime arasında olanları dahi saydırmaya çalışırsak kendimize özel bir metod yazabiliriz.
$text = "Arama yapılacak metnin kendisi bu metin içerisinde bundanKacTaneVar ibaresin den kaçtane olduğunu hesaplayacağız.";
$search = ['bundanKacTaneVar']; //array oldugu için birden fazla kelime ekleyebilirsiniz
$countKelime = count(explode(" ", $text));
$toplamlar = array(); //hangi kelimeden kaçtane bulduğunu depolayacağımız değişken
foreach ($search as $tag) {
$x = 0; //kalime sayacımız
$start = 0; //stripos metodu için $text değişkeninde aramaya başlayacağı harf sırası
for ($i=0; $i < $countKelime; $i++) {
if(($strt = stripos($text, $tag, $start)) !== false){//stripos büyük küçük kelime ayrımı olmadan arama yapar
$x++;
}else{
break;//hiç bulamadıysa döngüye devam etmesine gerek yok döngüyü durduruyorum
}
$start = ($strt + 1);//misal $text değişkeninde 5. karakterte bulduysa aynısını tekrar bulmaması için değeri 1 artırarak onu atlamasını sağlıyorum
}
if($x > 0){
$toplamlar[$tag] = $x; //hangi anahtar kelimenin kaçtane olduğunu depoluyoruz
}
}
Yorumlar
Yorum yapmak için giriş yapın