Merhaba, bugün PHP ile bir metnin ortalama okunma süresini hesaplayacağız.

Bir metnin ortalama okunma süresini hesaplamak için bir süreye ve bu süre içinde okuyabileceğimiz ortalama kelime sayısına ihtiyacımız var. Az sonra yazacağımız fonksiyonda bu iki kriteri parametre olarak fonsiyonumuza gönderip kodumuzu çalıştıracağız. Ben parametre değerini varsayılan olarak saniyede 2 kelime olarak belirledim ama fonksiyonu çağırırken bu değeri değiştirebilirsiniz.

Koda geçecek olursak işe <?php ?> etiketlerini açarak başlıyoruz.
Şimdi fonksiyonumuzu yazmaya başlayabiliriz, ben zamanHesapla() adında bir fonksiyon oluşturuyorum.

Bu fonksiyona iki parametre göndermem gerekiyor; birincisi okunma süresi hesaplanacak olan metin ve saniyede okunabilecek ortalama kelime sayısı. Örnek olarak kodumuz şöyle olacak:

<?php
	function zamanHesapla($veri = "", $saniyelikKelime = 2)
	{
	}
?>

Şimdi yazdığımız bu fonksiyonumuzun belirttiğimiz parametreleri kullanarak ortalama bir süre hesaplamasını sağlayalım.

$kelimeSayisi = count(explode(" ", $veri));
$okumaZamani = round($kelimeSayisi / $saniyelikKelime);

if ($okumaZamani < 60)
		{
			$saniye = $okumaZamani;
			echo "$saniye Saniyede Okuyabilirsiniz.";
		}
		
		else if ($okumaZamani < 3600)
		{
			$dakika = ceil($okumaZamani / 60);
			echo "$dakika Dakikada Okuyabilirsiniz";
		}
		
		else
		{
			$saat = floor($okumaZamani / 3600);
			echo "$saat Saatte Okuyabilirsiniz";
		}

Burada tanımlamış olduğumuz kelimeSayisi adlı değişken bizim parametre olarak gönderdiğimiz metnin kelime sayısını tutuyor. Bu satırda en içten dışarıya doğru gidecek olursak explode() fonksiyonu belirttiğimiz karaktere göre metni parçalıyor. Yani biz burada boşluk harfine göre kelimeleri tespit et demiş olduk. Bu fonksiyon bize tüm kelimeleri dizi (array) halinde döndüreceği için bizim bu dizinin eleman sayısını count() fonksiyonuyla hesaplamamız lazım. Daha sonra ise metnin okuma süresini hesaplamak için tanımladığım okumaZamani değişkenine bakalım. Burada da elde ettiğimiz kelime sayısını parametre olarak belirttiğimiz saniyede okuyabileceğimiz kelime sayısına bölüyoruz. Böylelikle okuma zamanını elde etmiş oluyoruz. Çıkan sonucun Tam sayı olabilmesi için round() fonksiyonunu kullandım. Bu fonksiyon parametre olarak gönderdiğimiz sayıyı en yakın tam sayıya yuvarlıyor. Sayının küsüratı beşten küçükse bir alt sayıya, büyükse bir üst sayıya yuvarlıyor. Örneğin round() fonksiyonu 20,5 sayısının küsüratı beşten küçük olmadığı için sayıyı 21 sayısına yuvarlayacaktır.

Son olarak yazdığım if bloğuna değinecek olursak; ilk kısımda okumaZamani değişkenin değerinin 60 sayısından küçük olup olmadığını kontrol ediyorum. Eğer değişkenimin değeri 60 sayısından küçükse ekrana çıkan değeri ve yazmak istediğim mesajı nokta (.) ile birleştiriyorum. Buradaki 60 sayısı 1 dakikada geçen saniye sayısıdır. Böylelikle kodumuz bu blok içerisine girerse sonucumuz saniye cinsinden bize dönecektir yani burada maksimum alabileceğimiz sonuç 59 saniyedir. Else if kısmında bulunan 3600 sayısı ise 1 saatte geçen saniye sayısıdır. Böylece buradaki değerimiz ise maksimum 59 dakika olacaktır ve son olarak else kısmında eğer değişkenimiz 3600 sayısından büyükse alabileceğimiz değer minimum 1 saattir.

Evet, böylelikle basit (genellikle blog sayfalarında kullanabileceğimiz) bir kodun sonuna geldik. Kodlara ve daha fazlasına github hesabımdan erişebilirsiniz 🙂