Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: eregi + białe znaki
Forum PHP.pl > Forum > PHP
Ulysess
witam mam dość prosty problem lecz nie mogę znaleźć nigdzie odpowiedzi.. a mianowicie potrzebuje zrobić walidacje formularz który przepuści zmienną jeżeli posiada tylko i wyłącznie a-z A-z 0-9 _ oraz spacje ale tylko w środku zmiennej czyli nie może spacją być 1 oraz ost znak . 1

  1. $zmienna = 'tekst1981_';
  2.  
  3. if(eregi('^[a-zA-Z0-9_]+$', $zmienna))
  4. {
  5. echo 'poprawne';
  6. }


nie wiem jak zrobić aby też spacje akceptował bo na tą chwile tego nie robi..

z góry dziękuje smile.gif
Fifi209
Zależ co masz na myśli "w środku", po jednym znaku? Po dwóch? Po dziesięciu...?

Poza tym nie używaj eregi tylko preg_match
Ulysess
a co to za różnica po ilu.. w nicku może być w dowolnym miejscu smile.gif w takim razie jak by to miało wyglądać?
Fifi209
To sobie obetnij na początku i na końcu spacje funckją trim a potem przepuść przez wyrażenie:
Kod
/^([a-z0-9_ ]+)$/i
Ulysess
  1. $zmienna = 'tekst 1981_';
  2.  
  3. if(preg_match('/^([a-z0-9_ ]+)$/i', $zmienna))
  4. {
  5. echo 'poprawne';
  6. }


rozumiem że tak to ma wyglądać questionmark.gif z tym trim to tak myślałem żeby zrobić smile.gif
Fifi209
  1. $zmienna = trim($zmienna);

A tak właściwie trudno sprawdzić i samemu pokombinować?
Ulysess
wiem że tak...

jaka jest różnica pomiędzy
  1. if(preg_match('/^([a-z0-9_ ]+)$/', $zmienna))


a

  1. if(preg_match('/^([a-z0-9_ ]+)$/i', $zmienna))


skoro nawet jeśli w zmiennej mam spacje to i tak przepsuzcza questionmark.gif...

w sumie jednak zmieniłem zdanie i wole żeby user miał w nazwie tylko a-z , 0-9 A-Z oraz _

  1. $zmienna = 'a1_aZ_913Z';
  2.  
  3. if(preg_match('/^[a-zA-Z0-9_]+$/', $zmienna))
  4. {
  5. echo 'poprawne';
  6. }


czy coś takiego wystarczy ?
Fifi209
Cytat(Ulysess @ 15.08.2009, 13:20:26 ) *
wiem że tak...

jaka jest różnica pomiędzy
  1. if(preg_match('/^([a-z0-9_ ]+)$/', $zmienna))


a

  1. if(preg_match('/^([a-z0-9_ ]+)$/i', $zmienna))

Taka, że to drugie przepuści też duże litery a to pierwsze nie.
Cytat(Ulysess @ 15.08.2009, 13:20:26 ) *
skoro nawet jeśli w zmiennej mam spacje to i tak przepsuzcza questionmark.gif...

Bo chciałeś mieć możliwość wpisania spacji, a te z przodu i tyłu ucinasz najpierw trim

Cytat(Ulysess @ 15.08.2009, 13:20:26 ) *
w sumie jednak zmieniłem zdanie i wole żeby user miał w nazwie tylko a-z , 0-9 A-Z oraz _

To zdecyduj się co chcesz.

Cytat(Ulysess @ 15.08.2009, 13:20:26 ) *
  1. $zmienna = 'a1_aZ_913Z';
  2.  
  3. if(preg_match('/^[a-zA-Z0-9_]+$/', $zmienna))
  4. {
  5. echo 'poprawne';
  6. }


czy coś takiego wystarczy ?

A nie prościej:
  1. if(preg_match('/^([a-z0-9_]+)$/i', $zmienna))


W ogóle zamiast głupio pytać to poczytaj np. :
http://uk3.php.net/manual/pl/reference.pcr...n.modifiers.php
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.