1. <?php
  2.  
  3. if(!function_exists('str_split')){
  4.  function str_split($string,$len = 1) {
  5.        if ($len < 1) return false;
  6.    for($i=0, $rt = Array();$i<ceil(strlen($string)/$len);$i++)
  7.      $rt[$i] = substr($string, $len*$i, $len);
  8.    return($rt);
  9.  }
  10. }
  11.  
  12. $slowa = Array(
  13.  'minus',
  14.  
  15.  Array(
  16.    'zero',
  17.    'jeden',
  18.    'dwa',
  19.    'trzy',
  20.    'cztery',
  21.    'pięć',
  22.    'sześć',
  23.    'siedem',
  24.    'osiem',
  25.    'dziewięć'),
  26.  
  27.  Array(
  28.    'dziesięć',
  29.    'jedenaście',
  30.    'dwanaście',
  31.    'trzynaście',
  32.    'czternaście',
  33.    'piętnaście',
  34.    'szesnaście',
  35.    'siedemnaście',
  36.    'osiemnaście',
  37.    'dziewiętnaście'),
  38.  
  39.  Array(
  40.    'dziesięć',
  41.    'dwadzieścia',
  42.    'trzydzieści',
  43.    'czterdzieści',
  44.    'pięćdziesiąt',
  45.    'sześćdziesiąt',
  46.    'siedemdziesiąt',
  47.    'osiemdziesiąt',
  48.    'dziewięćdziesiąt'),
  49.  
  50.  Array(
  51.    'sto',
  52.    'dwieście',
  53.    'trzysta',
  54.    'czterysta',
  55.    'pięćset',
  56.    'sześćset',
  57.    'siedemset',
  58.    'osiemset',
  59.    'dziewięćset'),
  60.  
  61.  Array(
  62.    'tysiąc',
  63.    'tysiące',
  64.    'tysięcy'),
  65.  
  66.  Array(
  67.    'milion',
  68.    'miliony',
  69.    'milionów'),
  70.  
  71.  Array(
  72.    'miliard',
  73.    'miliardy',
  74.    'miliardów'),
  75.  
  76.  Array(
  77.    'bilion',
  78.    'biliony',
  79.    'bilionów'),
  80.  
  81.  Array(
  82.    'biliard',
  83.    'biliardy',
  84.    'biliardów'),
  85.  
  86.  Array(
  87.    'trylion',
  88.    'tryliony',
  89.    'trylionów'),
  90.  
  91.  Array(
  92.    'tryliard',
  93.    'tryliardy',
  94.    'tryliardów'),
  95.  
  96.  Array(
  97.    'kwadrylion',
  98.    'kwadryliony',
  99.    'kwadrylionów'),
  100.  
  101.  Array(
  102.    'kwintylion',
  103.    'kwintyliony',
  104.    'kwintylionów'),
  105.  
  106.  Array(
  107.    'sekstylion',
  108.    'sekstyliony',
  109.    'sekstylionów'),
  110.  
  111.  Array(
  112.    'septylion',
  113.    'septyliony',
  114.    'septylionów'),
  115.  
  116.  Array(
  117.    'oktylion',
  118.    'oktyliony',
  119.    'oktylionów'),
  120.  
  121.  Array(
  122.    'nonylion',
  123.    'nonyliony',
  124.    'nonylionów'),
  125.  
  126.  Array(
  127.    'decylion',
  128.    'decyliony',
  129.    'decylionów')
  130. );
  131.  
  132. function odmiana($odmiany, $int){ // $odmiany = Array('jeden','dwa','pięć')
  133.  $txt = $odmiany[2];
  134.  if ($int == 1) $txt = $odmiany[0];
  135.  $jednosci = (int) substr($int,-1);
  136.  $reszta = $int % 100;
  137.  if (($jednosci > 1 && $jednosci < 5) &! ($reszta > 10 && $reszta < 20))
  138.    $txt = $odmiany[1];
  139.  return $txt;
  140. }
  141.  
  142. function liczba($int){ // odmiana dla liczb < 1000
  143.  global $slowa;
  144.  $wynik = '';
  145.  $j = abs((int) $int);
  146.  
  147.  if ($j == 0) return $slowa[1][0];
  148.  $jednosci = $j % 10;
  149.  $dziesiatki = ($j % 100 - $jednosci) / 10;
  150.  $setki = ($j - $dziesiatki*10 - $jednosci) / 100;
  151.  
  152.  if ($setki > 0) $wynik .= $slowa[4][$setki-1].' ';
  153.  
  154.  if ($dziesiatki > 0)
  155.        if ($dziesiatki == 1) $wynik .= $slowa[2][$jednosci].' ';
  156.  else
  157.    $wynik .= $slowa[3][$dziesiatki-1].' ';
  158.  
  159.  if ($jednosci > 0 && $dziesiatki != 1) $wynik .= $slowa[1][$jednosci].' ';
  160.  return $wynik;
  161. }
  162.  
  163. function slownie($int){
  164.  
  165.  global $slowa;
  166.  
  167.  $in = preg_replace('/[^-d]+/','',$int);
  168.  $out = '';
  169.  
  170.  if ($in{0} == '-'){
  171.    $in = substr($in, 1);
  172.    $out = $slowa[0].' ';
  173.  }
  174.  
  175.  $txt = str_split(strrev($in), 3);
  176.  
  177.  if ($in == 0) $out = $slowa[1][0].' ';
  178.  
  179.  for ($i = count($txt) - 1; $i >= 0; $i--){
  180.    $liczba = (int) strrev($txt[$i]);
  181.    if ($liczba > 0)
  182.      if ($i == 0)
  183.        $out .= liczba($liczba).' ';
  184.          else
  185.        $out .= ($liczba > 1 ? liczba($liczba).' ' : '')
  186.          .odmiana( $slowa[4 + $i], $liczba).' ';
  187.  }
  188.  return trim($out);
  189. }
  190.  
  191. ?>

efekt działania na zmiennej 1000 to:

Do zapłaty: 1000 zł
Słownie:
(tysiąc zł)

Moje pytanie brzmi jak zrobic aby przy jednym tysiacu dodawalo tez slowo jeden z przodu
Do zapłaty: 1000 zł
Słownie:
(jeden tysiąc zł)