Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Problem z funkcja ereg
Pronigo
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.05.2005
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


  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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A tak:
  1. <?php
  2. if(!eregi("^[0-9]{0,}$", $cena))
  3. {
  4.  $bledy .= 'Podana cena jest nieprawidłowa.';
  5. }
  6. ?>
Go to the top of the page
+Quote Post
Skobi
post
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 1
Dołączył: 19.02.2004

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
wrzasq
post
Post #4





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


przede wszystkim kropka w wyrazeniach regularnych zastepuje dowolny znak, wiec trzeba od niej "uciec".

oto (mam nadzieje (IMG:http://forum.php.pl/style_emoticons/default/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

Ten post edytował wrzasq 15.03.2006, 15:28:42
Go to the top of the page
+Quote Post

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: 22.08.2025 - 16:30