
İçerikler
PHP, sayısal değerlerin okunuşunu yazdırmak için birçok yöntem sunar. Bu yöntemler arasında, Türk Lirası cinsinden bir para değerinin okunuşunu yazdırmak da mümkündür. Bu yazıda, PHP ile Türk Lirası değerlerinin okunuşunu nasıl yazdırabileceğinizi öğreneceksiniz.
Bu işlemi sağlamak için bir sınıf oluşturacağız. Bu sınıf üzerinden işlemimizi gerçekleştireceğiz. Sınıf içerisinde üç farklı fonksiyon oluşturarak işlemin sağlıklı bir şekilde ilerlemesini sağlayacağız.
Sınıfa Başlangıç
İlk olarak sınıfımızın yapısını oluşturuyoruz. Sonrasında başlıklar altında fonksiyonları dolduruyor olacağız.
<?php class cevirici{ public $bir = ["","bir ","iki ","üç ","dört ","beş ","altı ","yedi ","sekiz ","dokuz "]; public $on = ["","on ","yirmi ","otuz ","kırk ","elli ","atmış ","yetmiş ","seksen ","doksan "]; public $ek = ["", "yüz ","bin ","milyon ","milyar ","trilyon ","katrilyon ","kentilyon ","seksilyon ","septilyon ","oktilyon "]; public function cevir($tutar){ // Lira ve kuruş gibi ayrımları burada yapıyoruz. } public function okunusu($grup){ // 1-2-3 basamaklı grupların okunusunu diziden alıyoruz. } public function gruplandir($tutar){ // Tutarın basamak tespitini yapıyoruz ve okunusu fonksiyonuna yolluyoruz. } }
Sınıfı genel olarak oluşturduktan sonra şimdi cevir
fonksiyonunun içerisini yazalım. Sonrasında burada nasıl bir işlem yaptığımızı inceleyelim.
cevir Fonksiyonu
Bu fonksiyon içerisinde, gelen değeri ilk olarak noktadan bölüyoruz. Bölme işlemiyle birlikte, lira ve kuruş değerlerini elde ediyoruz. Elde edilen tutarı, gruplandir
fonksiyonuna yollayarak, işlem sağlıyoruz. Bu işlemi lira ve kuruş için gerçekleştiriyoruz.
public function cevir($tutar){ $bol = explode(".", $tutar); $lira = $this->gruplandir($bol[0]). "Türk Lirası "; $kurus = ""; if( count($bol) == 2 ){ $kurus = ($bol[1] != "") ? $this->gruplandir($bol[1])." Kuruş" : ''; } return $lira.$kurus; }
Elde edilen değerleri gruplandir
fonksiyonuna yolladık. Şimdi gelin onu düzenleyelim.
gruplandir Fonksiyonu
Bu fonksiyonda, gönderilen tutar değerini number_format
ile gruplandırıyoruz. Gruplandırdığımız bölümleri for
döngüsüyle döndürüyoruz. Gelen değer üzerinden kontrol sağlayıp, elde edilen gruplandırılmış verileri okunusu
fonksiyonuna gönderip, okunusun yazılmasını sağlıyoruz.
public function gruplandir($tutar){ $okut = ""; $tutar = explode(',',number_format($tutar)); for($i=0; $i<count($tutar); $i++){ $j = (count($tutar)-$i); if($j > 1){ if($tutar[$i] == 1 && $this->ek[$j] == "bin "){ $okut .= $this->ek[$j]." "; }else{ if($tutar[$i] != "000"){ $okut .= $this->okunusu($tutar[$i])."".$this->ek[$j]." "; } } }else{ $okut .= $this->okunusu($tutar[$i]).""; } } return str_replace(" ", " ", mb_convert_case($okut, MB_CASE_TITLE, "UTF-8")); }
okunusu Fonksiyonu
Bu fonksiyonda, gruplandırarak gönderilen tutarın, diziden okunuşunu alıp return
ile döndürüyoruz. Gelen değerin 1, 2 yada 3 basamaklı olması durumuna göre bir koşuldan geçiriyoruz. Koşullarda sağlanan durum doğrultusunda, önceden hazırlanan dizilerden verileri alarak, okunuşu elde ediyoruz.
public function okunusu($grup){ if( strlen($grup) == 1 ){ return $this->bir[substr($grup,0,1)]; } if( strlen($grup) == 2 ){ return $this->on[substr($grup,0,1)]."".$this->bir[substr($grup,1,1)]; } if( strlen($grup) == 3 ){ if( substr($grup, 0, 1) > 0 ){ if( substr($grup,0,1) == 1 ){ $yuzler = $this->ek[1]; }else{ $yuzler = $this->bir[substr($grup,0,1)].$this->ek[1]; } }else{ $yuzler = $this->bir[substr($grup,0,1)]; } return $yuzler."".$this->on[substr($grup,1,1)]."".$this->bir[substr($grup,2,1)]; } }
Ayrıca, diziden gelen bilgiler doğrultusunda elde edilen okunuş değerinin tüm baş harflerini büyük bir şekilde yazdırmak için, mb_conver_case
kullanıyoruz.
Sınıfın Tamamı
Direkt sonuca ulaşmak ve hemen kullanmak isteyenler için sınıfın tamamlanmış haline aşağıdan ulaşabilirsiniz. PHP Programlama diliyle para birimininin okunuşunu bu şekilde sağlamaktayız.
<?php class cevirici{ public $bir = ["","bir ","iki ","üç ","dört ","beş ","altı ","yedi ","sekiz ","dokuz "]; public $on = ["","on ","yirmi ","otuz ","kırk ","elli ","atmış ","yetmiş ","seksen ","doksan "]; public $ek = ["", "yüz ","bin ","milyon ","milyar ","trilyon ","katrilyon ","kentilyon ","seksilyon ","septilyon ","oktilyon "]; public function cevir($tutar){ $bol = explode(".", $tutar); $lira = $this->gruplandir($bol[0]). "Türk Lirası "; $kurus = ""; if( count($bol) == 2 ){ $kurus = ($bol[1] != "") ? $this->gruplandir($bol[1])." Kuruş" : ''; } return $lira.$kurus; } public function okunusu($grup){ if( strlen($grup) == 1 ){ return $this->bir[substr($grup,0,1)]; } if( strlen($grup) == 2 ){ return $this->on[substr($grup,0,1)]."".$this->bir[substr($grup,1,1)]; } if( strlen($grup) == 3 ){ if( substr($grup, 0, 1) > 0 ){ if( substr($grup,0,1) == 1 ){ $yuzler = $this->ek[1]; }else{ $yuzler = $this->bir[substr($grup,0,1)].$this->ek[1]; } }else{ $yuzler = $this->bir[substr($grup,0,1)]; } return $yuzler."".$this->on[substr($grup,1,1)]."".$this->bir[substr($grup,2,1)]; } } public function gruplandir($tutar){ $okut = ""; $tutar = explode(',',number_format($tutar)); for($i=0; $i<count($tutar); $i++){ $j = (count($tutar)-$i); if($j > 1){ if($tutar[$i] == 1 && $this->ek[$j] == "bin "){ $okut .= $this->ek[$j]." "; }else{ if($tutar[$i] != "000"){ $okut .= $this->okunusu($tutar[$i])."".$this->ek[$j]." "; } } }else{ $okut .= $this->okunusu($tutar[$i]).""; } } return str_replace(" ", " ", mb_convert_case($okut, MB_CASE_TITLE, "UTF-8")); } }
Sınıfın Kullanımı
Hazırlamış olduğumuz bu üç fonksiyonla birlikte, yazılan sayısal değerlerin okunuşuna sahip oluyoruz. Örnek kullanımsa şu şekilde oluyor;
$cevir = new cevirici(); echo $cevir->cevir(1435250.31); echo "<br>"; echo $cevir->cevir(123.45);
Yukarıdaki örneğin kullanılmasıyla birlikte sonuç, “Bir Milyon Dört Yüz Otuz Beş Bin Iki Yüz Elli Türk Lirası Otuz Bir Kuruş” ve “Yüz Yirmi Üç Türk Lirası Kırk Beş Kuruş” olacaktır.
Sınıf üzerinde değişiklikler yaparak, kullanmış olduğunuz sisteme göre çıktılar elde edebilirsiniz. Böylelikle, PHP ile Türk Lirası girilen değerin, okunuşunun nasıl yapılacağını detaylandırmış oluyoruz.