• 30-11-2015, 22:25:26
    #1
    normalde çalışıyor ama kusuratlı rakamlar oldugu takdirde kusuratları vermiyor sizce ne yapabilirim?

    function yaziylasayi($sayi) { 
        $o = array( 
            'birlik' => array('BİR', 'İKİ', 'ÜÇ', 'DÖRT', 'BEŞ', 'ALTI', 'YEDİ', 'SEKİZ', 'DOKUZ'), 
            'onluk' => array('ON', 'YİRMİ', 'OTUZ', 'KIRK', 'ELLİ', 'ALTMIŞ', 'YETMİŞ', 'SEKSEN', 'DOKSAN'), 
            'basamak' => array('YÜZ', 'BİN', 'MİLYON', 'MİLYAR', 'TRİLYON', 'KATRİLYON') 
        ); 
    
        // 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); 
    }
  • 01-12-2015, 03:03:41
    #2
    daha öncesinde benzer birşey yapmıştım ama hangi projede yaptığımı bulamadım ama alttaki iki kaynak belki işinize yarayabilir.

    http://stackoverflow.com/questions/2...-a-word-in-php

    http://www.karlrixon.co.uk/writing/c...ords-with-php/
  • 01-12-2015, 10:50:20
    #3
    $tutar="123,56";
    $bol=explode(",",$tutar);
    echo yaziylasayi($bol[0])." TL ".yazisayiyla($bol[1])." krş";
    işinize yaraya bilir