Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Walidacja + ereg
Forum PHP.pl > Forum > PHP
peja1990
Witam.
Czy jest ktoś w stanie pomóc mi z ereg'ami w walidacji formularza ?
Mianowicie chcę aby formularz uznał pole za poprawnie wypełnione, gdy pole oznaczone numerem konta bankowego zostanie wypełnione w formie 00 0000 0000 0000 0000 0000 0000 lub 00000000000000000000000000.
Robię to eregami.
Pierwszy ereg wygląda tak:
  1. !ereg('^[0-9]{2,2}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}$', $_POST['bank_number'])

Drugi miałby wyglądać tak:
  1. !ereg('^[0-9]{2,2}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}$', $_POST['bank_number'])


Próbuję na dwa sposoby i bez efektu:

1 sposób:
  1. !ereg('^[0-9]{2,2}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}$', $_POST['bank_number']) OR !ereg('^[0-9]{2,2}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}$', $_POST['bank_number'])


2 sposób:
  1. !ereg('^[0-9]{2,2}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}[0-9]{4,4}$', $_POST['bank_number']) || !ereg('^[0-9]{2,2}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}[ ]{1,1}[0-9]{4,4}$', $_POST['bank_number'])


Wiem, że eregi wychodzą z użytku ale innego sposobu nie widzę.
STRLEN odpada bo nie sprawdza mi czy wpisane zostały cyfry czy litery.

Czy może mi ktoś z tym pomóc ?
Będę bardzo wdzięczny.
cycofiasz
usuń wszystkie spacje ze zmiennej którą będziesz sprawdzał i użyj
  1. preg_match('#^[0-9]{26}$#',$zmienna)
peja1990
Cytat(cycofiasz @ 21.06.2011, 17:22:57 ) *
usuń wszystkie spacje ze zmiennej którą będziesz sprawdzał i użyj
  1. preg_match('#^[0-9]{26}$#',$zmienna)


Kolego, ale Ty mnie nie rozumiesz.
Ja nie chcę sprawdzić wyłącznie tego czy wynik to cyfry i składa się z 26 znaków lecz chcę aby wynik był poprawny gdy jest złożony z cyfr i składa się z 26 LUB 32 znaków (czyli ze spacjami).
A tutaj również nie działa OR pomiędzy preg_match'ami.

  1. preg_match('#^[0-9]{26}$#',$_POST['bank_number']) OR preg_match('#^[0-9]{32}$#',$_POST['bank_number'])
cycofiasz
Więc napisałem żebyś najpierw usunął spacje z tego numeru, wtedy nie trzeba wstawiać OR. Spacje są tylko po to by było wygodniej czytać numer.
peja1990
Nie ogarniam Cię... Nie prosiłem o sugestie lecz o pomoc...
Przedstawiłem problem i chcę go rozwiązać... ;/
Chcę aby można było wpisać numer ze spacjami jak i bez nich...

EDIT !
Już sobie poradziłem...
greycoffey
Cytat(peja1990 @ 21.06.2011, 17:37:49 ) *
Nie ogarniam Cię... Nie prosiłem o sugestie lecz o pomoc...
Przedstawiłem problem i chcę go rozwiązać... ;/
Chcę aby można było wpisać numer ze spacjami jak i bez nich...

EDIT !
Już sobie poradziłem...


A innym nie napiszesz rozwiązania, jeśli by mieli taki sam problem? Najlepiej jedynie brać, a nic nie dawać w zamian.
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.