zahl_zu_wort.php
Quell Code
<?php
$stunden = zahl2wort(1222);//zahl2wort(idate('H'), '');
printf($stunden);//ausgabe zahl in wort
function zahl2wort($int, $genus='s'){
$int = (string)(int)$int;
$z2w = array('null'=>'null', 'und'=>'und',
1=>array('ein'.$genus,'ein','zwei','drei','vier','fünf','sechs','sieben','acht','neun','zehn',
'elf','zwölf','dreizehn','vierzehn','fünfzehn','sechzehn','siebzehn','achtzehn','neunzehn'),
2=>array('zwanzig','dreissig','vierzig','fünfzig','sechzig', 'siebzig','achtzig','neunzig'),
3=>array('hundert','tausend')
);
$intrev = strrev($int);
$len = strlen($intrev); // Stellen
$zif = str_split($intrev); // Ziffern
$zif = array_map('intval', $zif);
$wort = '';
if($len===1){ # Einstellige Zahl
if($zif[0]===0) $wort .= $z2w['null']; // 0
elseif($zif[0]===1) $wort .= $z2w[1][0]; // 1
else $wort .= $z2w[1][$zif[0]]; // 2 bis 9
}
elseif($len===2){ # Zweistellige Zahl
if($zif[1]===1) $wort .= $z2w[1][$zif[0]+10]; // 10 bis 19
elseif($zif[1]>=2 & $zif[0]!==0) $wort .= $z2w[1][$zif[0]].$z2w['und']; // [2-9][1-9]
if($zif[1]>=2) $wort .= $z2w[2][$zif[1]-2]; // 20 bis 99
}
elseif($len===3){ # Dreistellige Zahl
$wort .= $z2w[1][$zif[2]].$z2w[3][0]; // 100 bis 999
if($zif[1]===0 & $zif[0]==1) $wort .= $z2w[1][0]; // n01
elseif($zif[1]===0 & $zif[0]!==0) $wort .= $z2w[1][$zif[0]]; // n02 bis n09
elseif($zif[1]===1) $wort .= $z2w[1][$zif[0]+10]; // n10 bis n19
elseif($zif[1]>=2 & $zif[0]!=0) $wort .= $z2w[1][$zif[0]].$z2w['und']; // n[2-9][1-9]
if($zif[1]>=2) $wort .= $z2w[2][$zif[1]-2]; // n20 bis n99
}
elseif($len===4){ # Vierstellige Zahl
$wort .= $z2w[1][$zif[3]].$z2w[3][1].'-'; // 1000 bis 9999
if($zif[2]!==0) $wort .= $z2w[1][$zif[2]].$z2w[3][0].'-'; // n100 bis n999
elseif($zif[1]!==0 || $zif[0]!==0) $wort .= $z2w['und'].'-'; // n0[1-9][1-9]
if($zif[1]===0 & $zif[0]===1) $wort .= $z2w[1][0].'-'; // nn01
elseif($zif[1]===0 & $zif[0]!==0) $wort .= $z2w[1][$zif[0]].'-'; // nn02 bis nn09
elseif($zif[1]===1) $wort .= $z2w[1][$zif[0]+10].'-'; // nn10 bis nn19
elseif($zif[1]>=2 & $zif[0]!==0) $wort .= $z2w[1][$zif[0]].$z2w['und'].'-'; // nn[2-9][1-9]
if($zif[1]>=2) $wort .= $z2w[2][$zif[1]-2].'-'; // nn20 bis nn99
}
return $wort;
}
?>