SHARE
TWEET

Untitled

a guest Aug 25th, 2019 76 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. function convert_number_to_latvian_words($num)
  4. {
  5.     if ( ! is_numeric($num))
  6.         return false;
  7.  
  8.     if (($num >= 0 && (int) $num < 0) OR (int) $num < 0 - PHP_INT_MAX) {
  9.         // overflow
  10.         trigger_error('convert_number_to_latvian_words only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX, E_USER_WARNING);
  11.         return false;
  12.     }
  13.  
  14.     $dict = [
  15.         0 => 'nulle',
  16.         1 => 'viens',
  17.         2 => 'divi',
  18.         3 => 'trīs',
  19.         4 => 'četri',
  20.         5 => 'pieci',
  21.         6 => 'seši',
  22.         7 => 'septiņi',
  23.         8 => 'astoņi',
  24.         9 => 'deviņi',
  25.         10 => 'desmit',
  26.         11 => 'vienpadsmit',
  27.         12 => 'divpadsmit',
  28.         13 => 'trīspadsmit',
  29.         14 => 'četrpadsmit',
  30.         15 => 'piecpadsmit',
  31.         16 => 'sešpadsmit',
  32.         17 => 'septiņpadsmit',
  33.         18 => 'astoņpadsmit',
  34.         19 => 'deviņpadsmit',
  35.         20 => 'divdesmit',
  36.         30 => 'trīsdesmit',
  37.         40 => 'četrdesmit',
  38.         50 => 'piecdesmit',
  39.         60 => 'sešdesmit',
  40.         70 => 'septiņdesmit',
  41.         80 => 'astoņdesmit',
  42.         90 => 'deviņdesmit',
  43.         100 => 'simts',
  44.         1000 => 'tūkstotis',
  45.         1000000 => 'miljons',
  46.         1000000000 => 'miljards',
  47.     ];
  48.  
  49.     $pre = [
  50.         1 => 'vien',
  51.         2 => 'div',
  52.         3 => 'trīs',
  53.         4 => 'četr',
  54.         5 => 'piec',
  55.         6 => 'seš',
  56.         7 => 'septiņ',
  57.         8 => 'astoņ',
  58.         9 => 'deviņ',
  59.     ];
  60.  
  61.     if ($num < 0) {
  62.         return 'mīnus '.convert_number_to_latvian_words(abs($num));
  63.     }
  64.  
  65.     switch ($num) {
  66.         case 0:
  67.         case 100:
  68.         case 1000:
  69.         case 1000000:
  70.         case 1000000000:
  71.             return $dict[$num];
  72.     }
  73.  
  74.     if ($num < 21) {
  75.         return $dict[$num];
  76.     }
  77.  
  78.     if ($num < 100) {
  79.         $x10 = ((int) ($num / 10)) * 10;
  80.         $rem = $num % 10;
  81.  
  82.         $str = $dict[$x10];
  83.  
  84.         if ($rem > 0) {
  85.             $str .= ' '.$dict[$rem];
  86.         }
  87.  
  88.         return $str;
  89.     }
  90.  
  91.     if ($num < 1000) {
  92.         $x100 = intval($num / 100);
  93.         $rem = $num % 100;
  94.  
  95.         $str = ($x100 === 1 ? 'simtu' : $pre[$x100].'simt');
  96.  
  97.         if ($rem > 0) {
  98.             $str .= ' '.convert_number_to_latvian_words($rem);
  99.         }
  100.  
  101.         return $str;
  102.     }
  103.  
  104.     if ($num < 1000000) {
  105.         $val = intval($num / 1000);
  106.         $rem = $num % 1000;
  107.  
  108.         $str = convert_number_to_latvian_words($val);
  109.         $str .= ($val === 1 ? ' tūkstotis' : ' tūkstoši');
  110.  
  111.         if ($rem > 0) {
  112.             $str .= ' '.convert_number_to_latvian_words($rem);
  113.         }
  114.  
  115.         return $str;
  116.     }
  117.  
  118.     throw new Exception('Maximum number that can be converted to words exceeded');
  119. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top