Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: slownie();
Forum PHP.pl > Forum > Gotowe rozwiązania
itsme
Witajcie,
Poszukuje skryptu, który zamienia daną liczbę na kwotę słownie

11 345.99 = jedenaście tysięcy trzysta czterdzieści pięć zł 99/100

Jeżeli gdzieś to widzieliści to proszęo link jeżeli nie będę musiał sam napisać sad.gif(

Pozdrawiam
lisu
To znalazłem w necie :
http://www.pckurier.pl/archiwum/artykuly/s...listing.pas.asp - zrodlo w pascalu
http://radek.karnet.pl/Number-SpellPolish-0.5.tar.gz - jak znasz perla

Wiem, że to nie php, ale może na podstawie tego coś napiszesz i się podzielisz :wink:
dragossani
Napisałem kiedyś funkcje w php do generowania zapisu słownego. Straszna to amatorka rolleyes.gif (dopiero zaczynałem z php) ale może się przyda. Nie uwzględnia groszy ale łatwo to sobie dopisać.
Kod
function trzy($trzy,$spojnik,$wariant)

{

// opis: Podfunkcja dla slownie() generująca trójelementowe ciągi wyrazowe.



  $kwota=$trzy;

  $p=2;

  $sp=$spojnik;

  if ($wariant!="RW_1") {$spojnik="";};

  

  if ($kwota{$p-1}=="1")

  {

    switch ($kwota{$p})

    {

      case "0": $zdanie="dziesięć".$spojnik.$zdanie; break;

      case "1": $zdanie="jedenaście".$spojnik.$zdanie; break;

      case "2": $zdanie="dwanaście".$spojnik.$zdanie; break;

      case "3": $zdanie="trzynaście".$spojnik.$zdanie; break;

      case "4": $zdanie="czternaście".$spojnik.$zdanie; break;

      case "5": $zdanie="piętnaście".$spojnik.$zdanie; break;

      case "6": $zdanie="szesnaście".$spojnik.$zdanie; break;

      case "7": $zdanie="siedemnaście".$spojnik.$zdanie; break;

      case "8": $zdanie="osiemnaście".$spojnik.$zdanie; break;

      case "9": $zdanie="dziewiętnaście".$spojnik.$zdanie; break;

    };

  } else {

    switch ($kwota{$p})

    {

      case "1":

        if (!(($kwota{$p-1}=="0")&&($kwota{$p-2}=="0"))) {$zdanie="jeden".$spojnik.$zdanie;}; break;

      case "2": $zdanie="dwa".$spojnik.$zdanie; break;

      case "3": $zdanie="trzy".$spojnik.$zdanie; break;

      case "4": $zdanie="cztery".$spojnik.$zdanie; break;

      case "5": $zdanie="pięć".$spojnik.$zdanie; break;

      case "6": $zdanie="sześć".$spojnik.$zdanie; break;

      case "7": $zdanie="siedem".$spojnik.$zdanie; break;

      case "8": $zdanie="osiem".$spojnik.$zdanie; break;

      case "9": $zdanie="dziewięć".$spojnik.$zdanie; break;

    };

  };



  $p--;



  if (($kwota{$p}!="1")||($kwota{$p}!="0"))

  {

    switch ($kwota{$p})

    {

      case "2": $zdanie="dwadzieścia".$spojnik.$zdanie; break;

      case "3": $zdanie="trzydzieści".$spojnik.$zdanie; break;

      case "4": $zdanie="czterdzieści".$spojnik.$zdanie; break;

      case "5": $zdanie="pięćdziesiąt".$spojnik.$zdanie; break;

      case "6": $zdanie="sześćdziesiąt".$spojnik.$zdanie; break;

      case "7": $zdanie="siedemdziesiąt".$spojnik.$zdanie; break;

      case "8": $zdanie="osiemdziesiąt".$spojnik.$zdanie; break;

      case "9": $zdanie="dziewięćdziesiąt".$spojnik.$zdanie; break;

    };

  };



  $p--;



  if ($kwota{$p}!="0")

  {

    switch ($kwota{$p})

    {

      case "1": $zdanie="sto".$spojnik.$zdanie; break;

      case "2": $zdanie="dwieście".$spojnik.$zdanie; break;

      case "3": $zdanie="trzysta".$spojnik.$zdanie; break;

      case "4": $zdanie="czterysta".$spojnik.$zdanie; break;

      case "5": $zdanie="pięćset".$spojnik.$zdanie; break;

      case "6": $zdanie="sześćset".$spojnik.$zdanie; break;

      case "7": $zdanie="siedemset".$spojnik.$zdanie; break;

      case "8": $zdanie="osiemset".$spojnik.$zdanie; break;

      case "9": $zdanie="dziewięćset".$spojnik.$zdanie; break;

    };

  };



  if ($wariant=="RW_3") {return $zdanie.$sp;} else {return $zdanie;};

} //koniec podfunkcji trzy()



function przypadek($dwa,$sam,$duet,$wyjatek)

{

// opis: Podfunkcja dla slownie() dobierająca przypadek.



  if (($dwa{0}==0)&&($dwa{1}==0)&&($dwa{2}==1))

  {

    return $sam;

  } else {

    if ((($dwa{2}=="2")||($dwa{2}=="3")||($dwa{2}=="4"))&&($dwa{1}!="1"))

    {

      return $wyjatek;

    } else {

      if (!(($dwa{0}==0)&&($dwa{1}==0)&&($dwa{2}==0)))

      {

        return $duet;

      } else {

        return "";

      };

    };

  };

} //koniec podfunkcji przypadek()



function slownie($kwota,$waluta="PLN",$spojnik="",$wariant="RW_1")

{

// autor: Dragossani

// opis: Fukcja generuje zapis słowny na podstawie zapisu liczbowego.

//

// zmienne wejściowe:

// $kwota   - wymagana   - typ: integer (max. 15 cyfr) - domyślnie: [brak]

//            opis: liczba która ma zostać zamieniona na zapis słowny

// $waluta  - opcjonalna - typ: 'PLN'|'USD'|'GBP'|'DEM'|'EUR' - domyślnie: 'PLN'

//            opis: w jakiej walucie jest kwota

// $spojnik - opcjonalna - typ: string - domyślnie: ' '

//            opis: treść spójnika międzywyrazowego

// $wariant - opcjonalna - typ: 'RW_1'|'RW_3' - domyślnie: 'RW_1'

//            opis: sposób odzielania wyrazów, RW_3 - trójkami, RW_1 - co każdą cyfrę



  settype($kwota,"string");

  $len=strlen($kwota);

  $kwota=str_repeat("0",15-$len).$kwota;

  $len=strlen($kwota);

  $p=$len-1;



  switch ($waluta)

  {

    case "PLN":

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"złoty","złotych","złote"); break;

    case "USD":

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"dolar","dolarów","dolary"); break;

    case "GBP":

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"funt","funtów","funty"); break;

    case "DEM":

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"marka","marek","marki"); break;

    case "EUR":

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"euro","euro","euro"); break;

    default:

      $waluta=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"złoty","złotych","złote");

  };



  $zdanie=trzy($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},$spojnik,$wariant).$zdanie;

  $p=$p-3;

  $zdanie=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"tysiąc".$spojnik,"tysięcy".$spojnik,"tysiące".$spojnik).$zdanie;

  $zdanie=trzy($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},$spojnik,$wariant).$zdanie;

  $p=$p-3;



  $zdanie=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"milion".$spojnik,"milionów".$spojnik,"miliony".$spojnik).$zdanie;

  $zdanie=trzy($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},$spojnik,$wariant).$zdanie;

  $p=$p-3;



  $zdanie=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"miliard".$spojnik,"miliardów".$spojnik,"miliardy".$spojnik).$zdanie;

  $zdanie=trzy($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},$spojnik,$wariant).$zdanie;

  $p=$p-3;



  $zdanie=przypadek($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},"bilion".$spojnik,"bilionów".$spojnik,"biliony".$spojnik).$zdanie;

  $zdanie=trzy($kwota{$p-2}.$kwota{$p-1}.$kwota{$p},$spojnik,$wariant).$zdanie;



  $p=$len-1;



  if (trim($zdanie)=="")

  {

    if ($kwota{$p}=="1")

    {

      $zdanie="jeden".$spojnik;

    };

  };



  $zdanie=$zdanie.$waluta;

  return trim($zdanie);

} //koniec funkcji slownie()

Przykład użycia:
Kod
$waluta="USD";

$kwota=1234567890;

$spojnik="*";

$wariant="RW_1";



print(number_format($kwota, 2, ",", " ").'<BR>');

print(slownie($kwota).'<BR>');

print('***'.slownie($kwota,$waluta,$spojnik,$wariant).'***');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.