Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]preg_match
Forum PHP.pl > Forum > Przedszkole
krystian1991x
dlaczego pomimo tego że np znaków jest mniej niż 25 lub więcej 500 skrypt się dalej wykonuje ? co ja tutaj zrobiłem źle ?
  1. if(preg_match('#^[A-Za-z0-9_-]+$#', $value) && strlen($value) > 25 || strlen($value) < 500 )
  2. {
  3.  
  4. echo"wszystko gitara";
  5.  
  6. }
kokers
Ponieważ użyłeś operacji logicznej lub...

jeśli strlen będzie większy niż 25 LUB mniejszy niż 500 wtedy będzie to prawda. W związku z tym zawsze to będzie prawda. bo nawet jeśli wpiszesz ciąg znaków o długości 20 to pomimo że jest mniejszy niż 25 (co powoduje, że pierwsze porównanie jest nieprawdą), to jest też mniejszy niż 500 (co jest już prawdą). W przypadku użycia lub, przynajmniej jedno z porównań musi być prawdą, żeby instrukcje się wykonały.

Zmień operatora || na && i powinno działać.
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.