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 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ę?