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
 
Start new topic
Odpowiedzi
Necsord
post
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 60
Dołączył: 5.10.2010
Skąd: Bydgoszcz

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


http://forum.php.pl/index.php?showtopic=12806

Gotowe rozwiązania wystarczą czy chcesz iść w swoje?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 13:51