Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] input preg_match
Forum PHP.pl > Forum > Przedszkole
Sasuke Uchiha
Chciałem stworzyć walidacje pola taka by można było tylko wprowadzić litery duże i małe... ale nie działa sad.gif
  1. if(preg_match('/^[A-Za-z]$/D', $edit_user_firstname))
jasin
a spróbuj:
  1. if(preg_match('/\w+/', $edit_user_firstname))


lub

  1. if(preg_match('/^[a-z]+$/i', $edit_user_firstname))
krzywy36
samo [A-Za-z] oznacza tylko jeden znak, dodaj po tym gwiazdkę (*) - zero lub więcej wystąpień lub kropkę (.) - jedno lub więcej wystąpień.

@jasin, on chciał same małe i duże litery, w Twoim pierwszym przykładzie \w oznacza [a-zA-Z0-9_], a poza tym zapominasz o początku i końcu stringa i tym sposobem dopasujesz to nawet do 'aaAA33&*^'
jasin
@krzywy36
Wiem, dodałem drugi przykład (w czasie jak pisałeś smile.gif ) - mój błąd wink.gif
btw
"." ozbacza dowolny jeden znak, natomiast "+" oznacza jeden lub wiecej
Sasuke Uchiha
Dlaczego w przypadku pola z imieniem walidacja działa poprawnie a już z nazwiskiem nie ? dodam że zawartość pola nie ma w sobie żadnej cyfry...
  1. if(ValidEmail($edit_user_email)){
  2. $email = mysql_query("SELECT email FROM users WHERE email='$edit_user_email'");
  3. if(mysql_num_rows($email) == 0 || $row_edit_user['email'] == $edit_user_email){
  4. if(strlen(trim($edit_user_email)) > 10 AND strlen(trim($edit_user_email)) < 50){
  5. if(strlen(trim($edit_user_firstname)) > 2 AND strlen(trim($edit_user_firstname)) < 32){
  6. if(preg_match('/^[a-z]+$/i', $edit_user_firstname)){
  7. if(strlen(trim($edit_user_lastname)) > 2 AND strlen(trim($edit_user_lastname)) < 32){
  8. if(preg_match('/^[a-z]+$/i', $edit_user_lastname)){
  9. if(strlen(trim($edit_user_gadugadu)) > 1 AND strlen(trim($edit_user_gadugadu)) < 10){
  10. if(!preg_match('/^[a-z]+$/i', $edit_user_gadugadu)){
  11.  
  12. $edit_user_sql = mysql_query("UPDATE users
  13. SET email='$edit_user_email', first_name='$edit_user_firstname',
  14. last_name='$edit_user_lastname', gadu_gadu='$edit_user_gadugadu',
  15. clan='$edit_user_clan', age='$edit_user_age',
  16. location='$edit_user_location', city='$edit_user_city'
  17. WHERE id='$id_user'") or die ('mysql_error()');
  18. } else { echo "gg z literami ? no fajnie biggrin.gif"; }
  19. } else { echo "gadi gadi za krótkie"; }
  20. } else { echo "Bez cyfr koles to nazwisko..."; }
  21. } else { echo "Nazwisko jest za krótkie"; }
  22. } else { echo "Bez cyfr koles to imie..."; }
  23. } else { echo "Imie jest za krótkie"; }
  24. } else { echo "Email jest krótki"; }
  25. } else { echo "taki email jest w bazie..."; }
  26. } else { echo "email zly"; }


hmm questionmark.gif headsetsmiley.png
Adi32
Twój kod jest bardzo nieetyczny i nieprofesjonalny...

Jest co najmniej kilka sposobów napisania tego samego w 20 linijkach mniej...
Sasuke Uchiha
a ja nie przyszedłem się licytować tylko pytam o konkretny problem HEH POLSKA ;/

........
IProSoft
Może i nie ale nie licz na to, że ktoś będzie kopał w kilkunastu klamrach bo Tobie nie chce się tego napisać "normalnie"(czyt przejrzyście).
Pierwsze spojrzenie na kod i odechciewa się szukać, wystarczy mała pomyłka i validujesz nie to co trzeba.

Podaj wartości zmiennych, które validujesz.
jasin
Dokładnie, podaj wartości jakie przechodzą walidację a jakie nie. Ja osobiście obstawiam UTF-8, czyli dodaj
  1. preg_match('/^[a-z]+$/iu' ...
Sasuke Uchiha
już wiem co jest nie tak... puszcza mi znaki tylko od a do z a znaki typu ł,ć,ź już nie jak to zaznaczyć żeby takie znaki też przepuszczał filter ?
Adi32
Cytat(Sasuke Uchiha @ 28.06.2012, 21:43:04 ) *
już wiem co jest nie tak... puszcza mi znaki tylko od a do z a znaki typu ł,ć,ź już nie jak to zaznaczyć żeby takie znaki też przepuszczał filter ?


Dostałeś już na to rozwiązanie.
greycoffey
Cytat(Sasuke Uchiha @ 28.06.2012, 18:45:19 ) *
a ja nie przyszedłem się licytować tylko pytam o konkretny problem HEH POLSKA ;/

........

No HEH POLSKA ;/
HEH.
ŻAL KROPKA PEEL.

Przepraszam, musiałem.
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.