PHP Dersleri

PHP İle Türk Lirası Tutarını Yazıya Çevirme

PHP ile para birimi yazılan sayısal değeri, yazıya çeviriyoruz.

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.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir