Getal naar geschreven tekst

Door Eddy E, 6 maanden geleden, 2.090x bekeken

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).

Gesponsorde koppelingen

PHP script bestanden

  1. getal2tekst.php

 

Er zijn 2 reacties op 'Onbekend'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- Ariën  -
- Ariën -
6 maanden geleden
 
0 +1 -0 -1
Het getal 1337 geeft dit:
"derduizend zevenendertig"

En 1401 geeft:
"vierduizend een"
Dat klopt niet.

Maak eens een testcase met 10 random getallen die je laat uitvoeren, en probeer de bugs eruit te halen.

Ook raad ik aan om op invoer te controleren, of het een integer is, en of het lager is dan 10000.
Willem vp
Willem vp
5 maanden geleden
 
0 +1 -0 -1
De gemakkelijkste manier om het probleem op te lossen dat Ariën beschrijft, lijkt me het vervangen van de str_replace door een preg_replace:

preg_replace('/\btienhonderd/', 'duizend', $tekst);

De \b is hier een assertion die matcht op een word boundary, zodat een woord als honderd-tienhonderden wél wordt herschreven naar honderd-duizenden, maar dertienhonderd gewoon dertienhonderd blijft.

Nog een paar kleine andere dingetjes: regel 65 ('vjftighonderd') werkt niet vanwege een spelfout, regel 64 ('veertighonderd') is een duplicaat van regel 63, en regel 18 en 19 zijn eigenlijk overbodig, omdat die al in regel 6 worden geset door de explode. ;-)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. getal2tekst.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.