YUKLENIYR

Php de rakamı yazıya çevirme

Php de rakamı yazıya çevirme
Php de bazı durumlarda rakamları yazı ile yazmamız gerekebiliyor, özellikle para birimlerini yazı ile yazmak istediğimizde. Bunun için yaptığım aramalarda bulduğum bir fonksiyonu düzenleyerek daha öne kullanmıştım. Oldukça da başarılı olduğunu düşünüyorum ve sizlerle paylaşıyorum.

Kolay gelsin.

Çalışan kodlar :
 'Sıfır',
        1 => 'Bir',
        2 => 'İki',
        3 => 'Üç',
        4 => 'Dört',
        5 => 'Beş',
        6 => 'Altı',
        7 => 'Yedi',
        8 => 'Sekiz',
        9 => 'Dokuz',
        10 => 'On',
        11 => 'Onbir',
        12 => 'Oniki',
        13 => 'Onüç',
        14 => 'Ondört',
        15 => 'Onbeş',
        16 => 'Onaltı',
        17 => 'Onyedi',
        18 => 'Onsekiz',
        19 => 'Ondokuz',
        20 => 'Yirmi',
        30 => 'Otuz',
        40 => 'Kırk',
        50 => 'Elli',
        60 => 'Altmış',
        70 => 'Yetmiş',
        80 => 'Seksen',
        90 => 'Doksan',
        100 => 'Yüz',
        1000 => 'Bin',
        1000000 => 'Milyon',
        1000000000 => 'Milyar',
        1000000000000 => 'Trilyon',
        1000000000000000 => 'Katrilyon',
        1000000000000000000 => 'Senktrilyon'
    );

    if (!is_numeric($number)) {
        return false;
    }

    if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) {
        // overflow
        trigger_error(
                'sadece rakamlar -' . PHP_INT_MAX . ' - ' . PHP_INT_MAX, E_USER_WARNING
        );
        return false;
    }

    if ($number < 0) {
        return $negative . convert_number_to_words_tr(abs($number));
    }

    $string = $fraction = null;

    if (strpos($number, '.') !== false) {
        list($number, $fraction) = explode('.', $number);
    }

    switch (true) {
        case $number < 21:
            $string = $dictionary[$number];
            break;
        case $number < 100:
            $tens = ((int) ($number / 10)) * 10;
            $units = $number % 10;
            $string = $dictionary[$tens];
            if ($units) {
                $string .= $hyphen . $dictionary[$units];
            }
            break;
        case $number < 1000:
            $hundreds = $number / 100;
            $remainder = $number % 100;
            $string = $dictionary[$hundreds] . ' ' . $dictionary[100];
            if ($remainder) {
                $string .= $conjunction . convert_number_to_words_tr($remainder);
            }
            break;
        default:
            $baseUnit = pow(1000, floor(log($number, 1000)));
            $numBaseUnits = (int) ($number / $baseUnit);
            $remainder = $number % $baseUnit;
            $string = convert_number_to_words_tr($numBaseUnits) . ' ' . $dictionary[$baseUnit];
            if ($remainder) {
                $string .= $remainder < 100 ? $conjunction : $separator;
                $string .= convert_number_to_words_tr($remainder);
            }
            break;
    }

    if (null !== $fraction && is_numeric($fraction)) {
        $string .= $decimal;
        $words = array();
        foreach (str_split((string) $fraction) as $number) {
            $words[] = $dictionary[$number];
        }
        $string .= implode(' ', $words);
    }

    return $string;
}

echo convert_number_to_words_tr(529878.52);
?>