Loading:


    Kwota, liczba słownie PHP

    Skrypt pobiera liczbę w postaci np. 123.30 i zapisuje ją słownie. Kod można pobrać poniżej.

    Przykład użycia dla wyświetlenia liczby słownie:

    echo slownie(123.30);

    Przykład użycia dla wyświetlenia kwoty słownie:

    echo kwotaslownie(123.30);



    Napisz Artyku³

    Listing


    <?php

    if(!function_exists('str_split')){
      function str_split($string,$len = 1) {
            if ($len < 1) return false;
        for($i=0, $rt = Array();$i<ceil(strlen($string)/$len);$i++)
          $rt[$i] = substr($string, $len*$i, $len);
        return($rt);
      }
    }

    $slowa = Array(
      'minus',

      Array(
        'zero',
        'jeden',
        'dwa',
        'trzy',
        'cztery',
        'pięć',
        'sześć',
        'siedem',
        'osiem',
        'dziewięć'),

      Array(
        'dziesięć',
        'jedenaście',
        'dwanaście',
        'trzynaście',
        'czternaście',
        'piętnaście',
        'szesnaście',
        'siedemnaście',
        'osiemnaście',
        'dziewiętnaście'),

      Array(
        'dziesięć',
        'dwadzieścia',
        'trzydzieści',
        'czterdzieści',
        'pięćdziesiąt',
        'sześćdziesiąt',
        'siedemdziesiąt',
        'osiemdziesiąt',
        'dziewięćdziesiąt'),

      Array(
        'sto',
        'dwieście',
        'trzysta',
        'czterysta',
        'pięćset',
        'sześćset',
        'siedemset',
        'osiemset',
        'dziewięćset'),

      Array(
        'tysiąc',
        'tysiące',
        'tysięcy'),

      Array(
        'milion',
        'miliony',
        'milionów'),

      Array(
        'miliard',
        'miliardy',
        'miliardów'),

      Array(
        'bilion',
        'biliony',
        'bilionów'),

      Array(
        'biliard',
        'biliardy',
        'biliardów'),

      Array(
        'trylion',
        'tryliony',
        'trylionów'),

      Array(
        'tryliard',
        'tryliardy',
        'tryliardów'),

      Array(
        'kwadrylion',
        'kwadryliony',
        'kwadrylionów'),

      Array(
        'kwintylion',
        'kwintyliony',
        'kwintylionów'),

      Array(
        'sekstylion',
        'sekstyliony',
        'sekstylionów'),

      Array(
        'septylion',
        'septyliony',
        'septylionów'),

      Array(
        'oktylion',
        'oktyliony',
        'oktylionów'),

      Array(
        'nonylion',
        'nonyliony',
        'nonylionów'),

      Array(
        'decylion',
        'decyliony',
        'decylionów')
    );

    function odmiana($odmiany, $int){ // $odmiany = Array('jeden','dwa','pięć')
      $txt = $odmiany[2];
      if ($int == 1) $txt = $odmiany[0];
      $jednosci = (int) substr($int,-1);
      $reszta = $int % 100;
      if (($jednosci > 1 && $jednosci < 5) &! ($reszta > 10 && $reszta < 20))
        $txt = $odmiany[1];
      return $txt;
    }

    function liczba($int){ // odmiana dla liczb < 1000
      global $slowa;
      $wynik = '';
      $j = abs((int) $int);

      if ($j == 0) return $slowa[1][0];
      $jednosci = $j % 10;
      $dziesiatki = ($j % 100 - $jednosci) / 10;
      $setki = ($j - $dziesiatki*10 - $jednosci) / 100;

      if ($setki > 0) $wynik .= $slowa[4][$setki-1].' ';

      if ($dziesiatki > 0)
            if ($dziesiatki == 1) $wynik .= $slowa[2][$jednosci].' ';
      else
        $wynik .= $slowa[3][$dziesiatki-1].' ';

      if ($jednosci > 0 && $dziesiatki != 1) $wynik .= $slowa[1][$jednosci].' ';
      return $wynik;
    }

    function slownie($int){

      global $slowa;

      $in = preg_replace('/[^-\d]+/','',$int);
      $out = '';

      if ($in{0} == '-'){
        $in = substr($in, 1);
        $out = $slowa[0].' ';
      }

      $txt = str_split(strrev($in), 3);

      if ($in == 0) $out = $slowa[1][0].' ';

      for ($i = count($txt) - 1; $i >= 0; $i--){
        $liczba = (int) strrev($txt[$i]);
        if ($liczba > 0)
          if ($i == 0)
            $out .= liczba($liczba).' ';
              else
            $out .= ($liczba > 1 ? liczba($liczba).' ' : '')
              .odmiana( $slowa[4 + $i], $liczba).' ';
      }
      return trim($out);
    }
    function kwotaslownie($kwota){
      $kwota = explode('.', $kwota);
     
      $zl = preg_replace('/[^-\d]+/','', $kwota[0]);
      $gr = preg_replace('/[^\d]+/','', substr(isset($kwota[1]) ? $kwota[1] : 0, 0, 2));
      while(strlen($gr) < 2) $gr .= '0';

      echo slownie($zl) . ' ' . odmiana(Array('złoty', 'złote', 'złotych'), $zl) .
          (intval($gr) == 0 ? '' :
          ' ' . slownie($gr) . ' ' . odmiana(Array('grosz', 'grosze', 'groszy'), $gr));
    }


    ?>




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
    To samo tylko jako klasa, pozdro
    • Zobacz kod dodany do tego wpisu
      • <?php

        class D2W_pl {

                public static function getSlowa()
                {
                        return  Array(
                          'minus',
                       
                          Array(
                            'zero',
                            'jeden',
                            'dwa',
                            'trzy',
                            'cztery',
                            'pięć',
                            'sześć',
                            'siedem',
                            'osiem',
                            'dziewięć'),
                       
                          Array(
                            'dziesięć',
                            'jedenaście',
                            'dwanaście',
                            'trzynaście',
                            'czternaście',
                            'piętnaście',
                            'szesnaście',
                            'siedemnaście',
                            'osiemnaście',
                            'dziewiętnaście'),
                       
                          Array(
                            'dziesięć',
                            'dwadzieścia',
                            'trzydzieści',
                            'czterdzieści',
                            'pięćdziesiąt',
                            'sześćdziesiąt',
                            'siedemdziesiąt',
                            'osiemdziesiąt',
                            'dziewięćdziesiąt'),
                       
                          Array(
                            'sto',
                            'dwieście',
                            'trzysta',
                            'czterysta',
                            'pięćset',
                            'sześćset',
                            'siedemset',
                            'osiemset',
                            'dziewięćset'),
                       
                          Array(
                            'tysiąc',
                            'tysiące',
                            'tysięcy'),
                       
                          Array(
                            'milion',
                            'miliony',
                            'milionów'),
                       
                          Array(
                            'miliard',
                            'miliardy',
                            'miliardów'),
                       
                          Array(
                            'bilion',
                            'biliony',
                            'bilionów'),
                       
                          Array(
                            'biliard',
                            'biliardy',
                            'biliardów'),
                       
                          Array(
                            'trylion',
                            'tryliony',
                            'trylionów'),
                       
                          Array(
                            'tryliard',
                            'tryliardy',
                            'tryliardów'),
                       
                          Array(
                            'kwadrylion',
                            'kwadryliony',
                            'kwadrylionów'),
                       
                          Array(
                            'kwintylion',
                            'kwintyliony',
                            'kwintylionów'),
                       
                          Array(
                            'sekstylion',
                            'sekstyliony',
                            'sekstylionów'),
                       
                          Array(
                            'septylion',
                            'septyliony',
                            'septylionów'),
                       
                          Array(
                            'oktylion',
                            'oktyliony',
                            'oktylionów'),
                       
                          Array(
                            'nonylion',
                            'nonyliony',
                            'nonylionów'),
                       
                          Array(
                            'decylion',
                            'decyliony',
                            'decylionów')
                        );
                }
                public static function str_split($string,$len = 1) {
                        if ($len < 1) return false;
                    for($i=0, $rt = Array();$i<ceil(strlen($string)/$len);$i++)
                      $rt[$i] = substr($string, $len*$i, $len);
                    return($rt);
                  }
               
                public static function odmiana($odmiany, $int){ // $odmiany = Array('jeden','dwa','pięć')
                  $txt = $odmiany[2];
                  if ($int == 1) $txt = $odmiany[0];
                  $jednosci = (int) substr($int,-1);
                  $reszta = $int % 100;
                  if (($jednosci > 1 && $jednosci < 5) &! ($reszta > 10 && $reszta < 20))
                    $txt = $odmiany[1];
                  return $txt;
                }
               
                public static function liczba($int){ // odmiana dla liczb < 1000

                  $slowa = self::getSlowa();
                  $wynik = '';
                  $j = abs((int) $int);
               
                  if ($j == 0) return $slowa[1][0];
                  $jednosci = $j % 10;
                  $dziesiatki = ($j % 100 - $jednosci) / 10;
                  $setki = ($j - $dziesiatki*10 - $jednosci) / 100;
               
                  if ($setki > 0) $wynik .= $slowa[4][$setki-1].' ';
               
                  if ($dziesiatki > 0)
                        if ($dziesiatki == 1) $wynik .= $slowa[2][$jednosci].' ';
                  else
                    $wynik .= $slowa[3][$dziesiatki-1].' ';
               
                  if ($jednosci > 0 && $dziesiatki != 1) $wynik .= $slowa[1][$jednosci].' ';
                  return $wynik;
                }
               
                public static function slownie($int){
               
                  $slowa = self::getSlowa();
               
                  $in = preg_replace('/[^-d]+/','',$int);
                  $out = '';
               
                  if ($in{0} == '-'){
                    $in = substr($in, 1);
                    $out = $slowa[0].' ';
                  }
               
                  $txt = self::str_split(strrev($in), 3);
               
                  if ($in == 0) $out = $slowa[1][0].' ';
               
                  for ($i = count($txt) - 1; $i >= 0; $i--){
                    $liczba = (int) strrev($txt[$i]);
                    if ($liczba > 0)
                      if ($i == 0)
                        $out .= self::liczba($liczba).' ';
                          else
                        $out .= ($liczba > 1 ? self::liczba($liczba).' ' : '')
                          .self::odmiana( $slowa[4 + $i], $liczba).' ';
                  }
                  return trim($out);
                }
               
                public static function kwotaslownie($kwota){
                  $kwota = explode('.', $kwota);
                 
                  $zl = preg_replace('/[^-d]+/','', $kwota[0]);
                  $gr = preg_replace('/[^d]+/','', substr(isset($kwota[1]) ? $kwota[1] : 0, 0, 2));
                  while(strlen($gr) < 2) $gr .= '0';
               
                  echo self::slownie($zl) . ' ' . self::odmiana(Array('złoty', 'złote', 'złotych'), $zl) .
                      (intval($gr) == 0 ? '' :
                      ' ' . self::slownie($gr) . ' ' . self::odmiana(Array('grosz', 'grosze', 'groszy'), $gr));
                }
        }
        echo D2W_pl::kwotaslownie("12920.23");

        ?>
         
    autor: webrock.eu | 4309 | 2009-11-04 15:57:02


    Krótsza definicja funkcji odmiana() i bardziej intuicyjne jej użycie:
    • Zobacz kod dodany do tego wpisu
      • function odmiana($a,$b,$c){$a=abs($a);return $b.($c[abs($a%10-3)>1||abs($a%100-13)<2?$a-1?0:1:2]??$c[0]);};

        echo $liczba . odmiana( $liczba, ' sztuk', [ 0 => '', 1 => 'a', 2 => 'y' ] );
        // lub krócej: echo odmiana($liczba,"$liczba sztuk",['','a','y']);
    autor: Emeszenes | 13119 | 2020-04-05 12:41:49


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors