Muhasebesel işlemlerde numerik verileri alfanümerik verilere çevirme

Merhaba

Muhasebesel işlemlerde rakam ile yazan integer tipindeki verileri faturada string türünde yazdırmamız gereklidir .

Örneğin toplam fiyatı 150,99 TL olan bir tutarı #yüzelliliradoksandokuzkurus# formatına çevirmemiz gerekli . Bu tip bir fonksiyonu yazmak oldukça zahmetli ve zaman alıcı . İnternette bulduğum bu fonksiyonu biraz toparlaım ve herkezin kullanabileceği yazıya çevirdim .

 


function yaziylasayi($sayi) { 
    $o = array( 
        'birlik' => array('bir', 'iki', 'üç', 'dört', 'beş', 'alti', 'yedi', 'sekiz', 'dokuz'), 
        'onluk' => array('on', 'yirmi', 'otuz', 'kirk', 'elli', 'altmis', 'yetmis', 'seksen', 'doksan'), 
        'basamak' => array('yüz', 'bin', 'milyon', 'milyar', 'trilyon', 'katrilyon') 
    ); 

    // Sayıyı basamaklarına ayırıyoruz 
    $basamak = array_reverse(str_split(implode('', array_reverse(str_split($sayi))), 3)); 

    // Basamak sayısını belirliyoruz 
    $basamak_sayisi = count($basamak); 

    // Her basamak için: 
    for($i=0; $i < $basamak_sayisi; ++$i) {          // Sayıyı basamaklarına ayırdığımızda basamaklar tersine döndüğü için burada ufak bir işlem ile basamakları düzeltiyoruz          $basamak[$i] = implode(array_reverse(str_split($basamak[$i])));                    // Eğer basamak 4, 8, 15, 16, 23, 42 gibi 1 veya 2 rakamlıysa başına 3 rakama tamamlayacak şekilde "0" ekliyoruz ki foreach döngüsünde problem olmasın          if(strlen($basamak[$i]) == 1)              $basamak[$i] = '00' . $basamak[$i];          elseif(strlen($basamak[$i]) == 2)              $basamak[$i] = '0' . $basamak[$i];      }      $yenisayi = array();      // Her basamak için: ($yenisayi değişkenine)      foreach($basamak as $k => $b) { 
        // basamağın ilk rakamı 0'dan büyük ise 
        if($b[0] > 0) 
            // değişkene rakamın harfle yazılışı ve "yüz" ekliyoruz 
            $yenisayi[] = ($b[0] > 1 ? $o['birlik'][$b[0]-1] . ' ' : '') . $o['basamak'][0]; 

        // basamağın 2. rakamı 0'dan büyük ise 
        if($b[1] > 0) 
            // değişkene rakamın harfle yazılışını ekliyoruz 
            $yenisayi[] = $o['onluk'][$b[1]-1]; 

        // basamağın 3. rakamı 0'dan büyük ise 
        if($b[2] > 0) 
            // değişkene rakamın harfle yazılışını ekliyoruz 
            $yenisayi[] = $o['birlik'][$b[2]-1]; 

        // değişkene basamağın ismini (bin, milyon, milyar) ekliyoruz 
        if($basamak_sayisi > 1) 
            $yenisayi[] = $o['basamak'][$basamak_sayisi-1]; 

        // Basamak sayısını azaltıyoruz ki her basamağın sonuna ilkinde ne yazıyorsa o yazılmasın 
        --$basamak_sayisi; 
    } 

	  return implode(' ', $yenisayi); 

}

// Kullanımı ;

echo yaziylasayi(199);

// Sonuç = yuzdoksandokuzlira

Yararlı olması dileğiyle .