lulu: Huhu Andreas , hier eine Spende über 999999999999 €

Beitrag lesen

Huhu Andreas

Neunhundertneunundneunzigmilliardenneunhundertneunundneunzigmillionenneunhundertneunundneunzigtausendneunhundertneunundneunzig
oder 999999999999
das ist z.Zt. die größte Zahl welche mein kleines Skript "transformieren" kann.
Sollte für normale Spendenbeträge reichen (keine Parteispenden).
Ist sicherlich noch verschönerungs+verbesserungswürdig aber fürs erste soll es das mal gewesen sein, hat jedenfalls Spass gemacht.

Viele Grüße

lulu

<?php

function get_zehner($n)
{
     $zahlwoerter=array('null','ein','zwei','drei','vier','fünf','sechs','sieben','acht','neun','zehn','elf','zwölf');

$n=abs(floor($n)); # nur ganze positive Zahlen
 if($n>99) return $n; # max 99

// Zahlen bis 12
 if($n<13){
  $zahlwoerter[1]='eins';
   return $zahlwoerter[$n];
 }
  // Zahlen bis 19
 if($n<20){
  $zahlwoerter[6]='sech';
  $zahlwoerter[7]='sieb';
   return $zahlwoerter[($n-10)].'zehn';
 }
  // Zahlen bis 99
 if($n<100){
  $zehner=floor($n/10);
  $einer=$n-$zehner*10;
  $einer_wert=$einer>0?$zahlwoerter[$einer].'und':'';
  $zahlwoerter[2]='zwan';
  $zahlwoerter[6]='sech';
  $zahlwoerter[7]='sieb';
  $zehner_wert=$zahlwoerter[$zehner].($zehner==3?'ßig':'zig');
   return $einer_wert.$zehner_wert;
 }
 return $n;
}

function get_hundert($n)
{
 $n=abs(floor($n)); # nur ganze positive Zahlen
 if($n>999) return $n; # max 999

$hunderter=floor($n/100);
 $rest=$n-$hunderter*100;
 if($hunderter>0){
  $hunderter_wert=( $hunderter==1?'ein':get_zehner($hunderter) ).'hundert';
 }
 $rest_wert=$rest>0?get_zehner($rest):'';
 return $hunderter_wert.$rest_wert;
}

function zahlwort($n)
{
 $n=abs(floor($n)); # nur ganze positive Zahlen
 $l=strlen($n);
 $einer=get_zehner(substr($n,-2) );
 if($l>2){
  $hdt=substr($n,-3) ;
  $hunderter_wert=get_hundert($hdt);
  $einer='';
 }
 if($l>3){
  $tsd=substr($n,-6,-3) ;
  if($tsd>0){
   $tausender_wert=get_hundert($tsd).'tausend';
  }
 }
 if($l>6){
  $mio=substr($n,-9,-6) ;
  if($mio>0){
   $mio_wert=( $mio==1?'eine':get_hundert($mio)).'million'.($mio>1?'en':'');
  }
 }
 if($l>9){
  $mia=substr($n,-12,-9) ;
  if($mia>0){
   $mia_wert=( $mia==1?'eine':get_hundert($mia)).'milliarde'.($mia>1?'n':'');
  }
 }
 return sprintf('%s%s%s%s%s',$mia_wert,$mio_wert,$tausender_wert,$hunderter_wert,$einer);
}

function zahl_ausschreiben($n)
{
 return ucfirst(zahlwort($n));
}

for($i=0;$i<100;$i++){
 $n=$i*1;

printf ('%s -> %s<br>',$n,zahl_ausschreiben($n));
}

echo zahl_ausschreiben(999999999999);
?>