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
Chciałbym wiedzieć, czy jest ono poprawnie skonstruowane, czy można je jakoś ulepszyć?
<?php
$matryca = "/^[0-9]{1,2}(\.|,)[0-9]{2}$/";
$input = '0,30';
if(preg_match($matryca, $input)==TRUE) print 'ok
'.$input;
else print 'dupa a nie ok
'.$input;
?>
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ł:
<?php
if ($input[0]==0 and $input[1]!=0)
?>
ale co dalej…? Jak usuwać pierwszą cyfrę?