Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z funkcja ereg
Forum PHP.pl > Forum > PHP
Pronigo
  1. <?php
  2. if (ereg("^([0-9]+).([0-9]{2})", $a)) {
  3. return $a;
  4. }
  5. ?>


Napisalem sobie ta prosta funkcje sprawdzajaca poprawnosc wprowadzonej ceny. Ereg powinno sprawdzic czy cena jest w formacie: XXXXXX.YY

Pierwszy czlon moze skladac sie z wielu znakow, natomiast miejsce po kropce tylko z dwoch liczb. Okazuje sie, ze jezeli podam np. 1000.232 to rowniez zostanie to zaakceptowane.

Dlaczego tak sie dzieje, prosze nie dawac mi linka do php.net bo wlasnie z manuala korzystalem pisajac to funkcje.
Kshyhoo
A tak:
  1. <?php
  2. if(!eregi("^[0-9]{0,}$", $cena))
  3. {
  4.  $bledy .= 'Podana cena jest nieprawidłowa.';
  5. }
  6. ?>
Skobi
zrób tak, powinno zadziałać:

  1. <?php
  2.  
  3. $a=100.923;
  4. if (ereg("^([0-9]+).([0-9]{2})$", $a)) 
  5. {
  6. echo "ok";
  7. }
  8. else
  9. {
  10. echo "blad";
  11. }
  12.  
  13. ?>
wrzasq
przede wszystkim kropka w wyrazeniach regularnych zastepuje dowolny znak, wiec trzeba od niej "uciec".

oto (mam nadzieje winksmiley.jpg ) dzialajaca wersja:

  1. <?php
  2.  
  3. function czyPoprawna($cena)
  4. {
  5. return ereg('^[0-9]+\.[0-9]{2}$', $cena);
  6. }
  7.  
  8. ?>


@Kshyhoo: twoja wersja w ogole nie dopuszczalaby kropki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.