Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Wyrażenie regularne na kwotę (cena, zapis walutowy)
tomilipin
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

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


Witam,
piszę sobie od jakiegoś czasu skrypt - taki jakby sklepik internetowy oparty na plikach tekstowych. Doszedłem do momentu, w którym dodaje się do oferty przedmiot i chciałbym aby wpisywana cena była validowana. Napisałem do tego wyrażenie regularne - pierwsze w mojej karierze (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Chciałbym wiedzieć, czy jest ono poprawnie skonstruowane, czy można je jakoś ulepszyć?
  1. <?php
  2. $matryca = "/^[0-9]{1,2}(.|,)[0-9]{2}$/";
  3. $input = '0,30';
  4.  
  5. if(preg_match($matryca, $input)==TRUE) print 'ok <br />'.$input;
  6. else print 'dupa a nie ok<br />'.$input;
  7. ?>


Ogólna specyfikacja:
- input jest traktowany jako string - zmusza mnie do tego tekstowa baza danych
- wpisywana liczba musi posiadać separator dziesiętnych w postaci kropki lub przecinka (później będzie to ustandaryzowane to jednego znaku)
- liczba musi być dodatnia (i tu pojawia się problem)
- jeśli pierwsza cyfra jest zerem a druga cyfra jest różna od zera (np. 04,50) to pierwszą cyfrę należy usunąć (aby było 4,50)

Problem:
- mój regexp akceptuje kwotę 0,00 oraz 00,00 a więc niedodatnią
- aby poradzić sobie z tą pierwszą cyfrą, wydaje mi się że warunek będzie brzmiał:
  1. <?php
  2. if ($input[0]==0 and $input[1]!=0)
  3. ?>
ale co dalej...? Jak usuwać pierwszą cyfrę?
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: 3.10.2025 - 05:36