Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] preg_match, walidacja formularza
Forum PHP.pl > Forum > Przedszkole
szpakoo
jak napisać sprawdzenie zawartości formularza, żeby nie zawierał znaków innych niż z przedziału A-Z, a-z, 0-9_-

mam coś takiego:
  1. <?php
  2. $wyrazenie='AlaMaKota1';
  3.  
  4. if(preg_match('/[A-Za-z0-9_-]/', $wyrazenie))echo 'pasuje';
  5. ?>


no i wszystko działa fajnie, tylko nie rozumiem dlaczego zwraca "pasuje" jak w podanym wyrazeniu wstawie znak z poza tego przedzialu np: . , : ; @ ! cokolwiek. nadal zwraca ze wyrazenie pasuje.

Prosze o pomoc, bo nie rozumiem tego
lilik
bo 'pasuje' jest traktowane jako ciag tekstwowy
powinno byc
  1. <?php
  2. echo $pasuje;
  3. ?>


jak juz winksmiley.jpg ale wczesniej musisz wynik podstawic do zmiennej $pasuje
help_mee
  1. <?php
  2. $wyrazenie='AlaMaKota1';
  3.  
  4. if(preg_match('/[A-Za-z0-9_-]/', $wyrazenie)) {
  5. echo $pasuje;
  6. }
  7. ?>

questionmark.gif a tak questionmark.gif
szpakoo
tak bo 'pasuje' to ma być ciag tekstowy który sie wyswietla wtedy gdy $wyrazenie pasuje do podanego w funkcji preg_match wyrażenia regularnego.


więc jesli $wyrazenie pasuje to wyswietla sie napis "pasuje", jak nie pasuje $wyrazenie to sie nic nie wyswietla.

i pytanie: dlaczeo $wyrazenie='AlaMaKota.'; tez pasuje skoro nie ma w wyrażeniu regularnym znaku "." ?

EDIT:

zagmatwałem troche. Zaczne od nowa smile.gif
mam $wyrazenie i chce sprawdzić czy składa się z takich znaków z jakich chce (A-Za-z0-9_-).
jak składa się z tych znaków to wszystko OK, jeśli ma w sobie inne znaki to wywali mi błąd
specialplan
Zle napisales wyrazenie. Osobiscie nie wymiatam w regexp, ale takie cos powinno dzialac (nie testuje, wiec wybacz, jesli nie):

  1. <?php
  2. if(preg_match('#^[A-Za-z0-9_-]+$#', $wyrazenie))
  3. {
  4. echo 'pasuje';
  5. }
  6. ?>
szpakoo
to ja mam problem i to ja będę testował smile.gif dzięki wielkie bo po paru próbach działa jak należy:)
magno
Hej,

temat dosc stary, ale moze ktos sie ulituje wstydnis.gif

otoz nie do konca rozumiem zapis #^[A-Za-z0-9_-]+$# - czemu zadzialalo dopiero tak, a tak: [A-Za-z0-9_-] nie?

Sa objasnienia '^','+','$', ale co tu doklanie robi #?
Quantum
Cytat
Sa objasnienia '^','+','$', ale co tu doklanie robi #?

http://php.net/manual/en/regexp.reference.delimiters.php
magno
Dzięki!
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.