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;
}
?>