Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przemiana liczb na słowa
rivos
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 2
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


Witam mam taki problem z tym kodem:
  1. <?php
  2. function policz($l,$t1,$t2,$t3) {
  3. $j = array("", "jeden ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ",
  4. "siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ",
  5. "dwanaście ", "trzynaście ", "czternaście ", "piętnaście ",
  6. "szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście ");
  7. $d = array("", "", "dwadzieścia ", "trzydzieści ", "czterdzieści ",
  8. "pięćdziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ",
  9. "osiemdziesiąt ", "dziewięćdziesiąt ");
  10. $s = array("","sto ", "dwieście ", "trzysta ", "czterysta ", "pięćset ",
  11. "sześćset ", "siedemset ", "osiemset ", "dziewięćset ");
  12.  
  13. $txt = $s[0+substr($l,0,1)];
  14. if (substr($l,1,2)<20) $txt .= $j[0+substr($l,1,2)];
  15. else $txt .= $d[0+substr($l, 1,1)].$j[0+substr($l, 2,1)];
  16. if ($l<>0) if ($l==1) $txt .= "$t1 "; else {
  17. if ((substr($l,2,1)==2 or substr($l,2,1)==3 or substr($l,2,1)==4)
  18. and (substr($l,1,2)>20 or substr($l,1,2)<10))
  19. $txt .= "$t2 "; else $txt .= "$t3 ";
  20. }
  21. return $txt;
  22. }
  23.  
  24. function slownie($liczba) {
  25. $liczba=sprintf("%012d",$liczba);
  26. $txt .= policz(substr($liczba, 0,3)," miliard "," miliardy "," miliardów ");
  27. $txt .= policz(substr($liczba, 3,3)," milion "," miliony "," milionów ");
  28. $txt .= policz(substr($liczba, 6,3)," tysiąc "," tysiące "," tysięcy ");
  29. $txt .= policz(substr($liczba, 9,3)," "," "," ");
  30. if ($liczba==0) $txt="zero";
  31. return $txt;
  32. }
  33. function przelicz($stringa) {
  34.  
  35. $m = preg_match_all('/[0-9]/', $stringa, $match);
  36.  
  37. if ($m) {
  38. $links=$match[0];
  39. for ($j=0;$j<$m;$j++) {
  40. $stringa=str_replace($links[$j],slownie($links[$j]),$stringa);
  41. }
  42. }
  43.  
  44. return $stringa;
  45. }
  46. $asdas = "312 d a";
  47. $asdax = $asdas;
  48. while(preg_replace('/([^0-9])/', '\\1', $asdas) >= 1) {
  49. $kuz = preg_replace('/([^0-9])/', '\\1', $asdas);
  50. $asdas = str_replace($kuz, slownie($kuz), $asdas);
  51. $asdas = str_replace($kuz, '', $asdas.$asdax);
  52. }
  53. ?>


i to dziadostwo daje mi tylko trzysta dwanaście bez kolejnych znaków - " d a"

mam jeszcze jeden:
  1. <?php
  2. $asdas = "312 d a";
  3. $asdax = $asdas;
  4. while(preg_replace('/([^0-9])/', '\\1', $asdas) >= 1) {
  5. $kuz = preg_replace('/([^0-9])/', '\\1', $asdas);
  6. $asdas = str_replace($kuz, przelicz($kuz), $asdas);
  7. $asdas = str_replace($kuz, '', $asdas.$asdax);
  8. }
  9. ?>
ale daje trzy jeden dwa d a

Proszę o pomoc
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:34