Scripts

Getal naar geschreven tekst

In deze functie, die een geheel getal (INTEGER) omzet naar geschreven tekst. 22 --> tweeëntwintig 1234 --> twaalfhonderdvierendertig 3006 --> drieduizend zes Dit is conform de stelregels van Onze Taal, getest en werkzaam tot 9999. Bevat géén negatieve getallen (al zou dat niet heel moeilijk moeten zijn om in te bouwen). Ik plaats dit voor jullie gemak én om het later gemakkelijker terug te vinden (doe ik vaker met wat grotere functies).

getal2tekst.php
<?php

function getal2tekst($getal)
{
    //  echo 'Binnenkomst: ' . $getal;
    $t = explode(",", 'nul, een, twee, drie, vier, vijf, zes, zeven, acht, negen, tien, elf, twaalf, dertien, viertien, vijftien, zestien, zeventien, achttien, negentien, twintig');
    $t['00'] = '';
    $t['01'] = $t[1];
    $t['02'] = $t[2];
    $t['03'] = $t[3];
    $t['04'] = $t[4];
    $t['05'] = $t[5];
    $t['06'] = $t[6];
    $t['07'] = $t[7];
    $t['08'] = $t[8];
    $t['09'] = $t[9];

    $t[10] = 'tien';
    $t[20] = 'twintig';
    $t[30] = 'dertig';
    $t[40] = 'veertig';
    $t[50] = 'vijftig';
    $t[60] = 'zestig';
    $t[70] = 'zeventig';
    $t[80] = 'tachtig';
    $t[90] = 'negentig';
    $t[100] = 'honderd';
    $t[1000] = 'duizend';
    $t[2000] = 'tweeduizend';
    $t[3000] = 'drieduizend';
    $t[4000] = 'vierduizend';
    $t[5000] = 'vijfduizend';
    $t[6000] = 'zesduizend';
    $t[7000] = 'zevenduizend';
    $t[8000] = 'achtduizend';
    $t[9000] = 'negenduizend';

    if (isset($t[$getal])) {
        //echo 'Ik kies ' . $t[$getal];
        $tekst = $t[$getal];
    } elseif ($getal < 100) {
        $eental = substr($getal, -1, 1);
        $tiental = substr($getal, 0, 1) . "0";
        $tekst = $t[$eental] . 'en' . $t[$tiental];

        // twee-en-.... filter
        $tekst = str_replace("tweeen", "tweeën", $tekst);
        $tekst = str_replace("drieen", "drieën", $tekst);

        return trim($tekst);
    } else {
        // veelvoud van honderd, dus elfhonderd, dertienhonderd etc
        $bovendehonderd = getal2tekst(substr($getal, 0, 2)) . 'honderd';
        $onderdehonderd = getal2tekst(substr($getal, -2, 2));
        $tekst = $bovendehonderd . $onderdehonderd;
    }
    // haal de eenhonderd en eenduizend eruit
    $tekst = str_replace("eenhonderd", "honderd", $tekst);
    $tekst = str_replace("eenduizend", "duizend", $tekst);
    $tekst = str_replace("tienhonderd", "duizend", $tekst);
    $tekst = str_replace("twintighonderd", "tweeduizend", $tekst);
    $tekst = str_replace("dertighonderd", "drieduizend", $tekst);
    $tekst = str_replace("veertighonderd", "vierduizend", $tekst);
    $tekst = str_replace("veertighonderd", "vierduizend", $tekst);
    $tekst = str_replace("vjftighonderd", "vijfduizend", $tekst);
    $tekst = str_replace("zestighonderd", "zesduizend", $tekst);
    $tekst = str_replace("zeventighonderd", "zevenduizend", $tekst);
    $tekst = str_replace("tachtigduizend", "achtduizend", $tekst);
    $tekst = str_replace("negentigduizend", "negenduizend", $tekst);
    $tekst = str_replace("duizenden", "duizend ", $tekst);

    $tekst = str_replace(" ", "", $tekst);
    $tekst = str_replace("duizend", "duizend ", $tekst);

    // geef terug
    return trim($tekst);
}

Reacties

0
Nog geen reacties.