Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenia regularne, sprawdzanie danych
Forum PHP.pl > Forum > Przedszkole
z-x
Chciałbym sprawdzić zmienną pod kątem zawartych w niej znaków. Chodzi mi o to, żeby mogła zawierać tylko znali alfanumeryczne, lub spację pomiędzy znakami alfanumerycznymi (w przypadku nazwiska). Zapisałem więc tak:
  1. <?php
  2. !eregi('[[:alnum:]|([:alnum:][:space:][:alnum:]]{1,20}', $_POST['uzytkownik_login'])
  3. ?>
Wszystko byłoby dobrze, gdyby nie fakt, że jak wpiszę np.: #$@#z (czyli choć jeden znak alfanumeryczny) to nie zauważa błędu. Gdy wpisze same znaki specjalne jest ok.

A teraz napiszę czego oczekuję od skryptu:
- dozwolone znaki alfanumeryczne
- dozwolona jedna spacja między znakami alfanumerycznymi (czyli np. Adam Adamek)
- zakaz stosowania wszelkich pozostałych znaków w jakimkolwiek miejscu
- zakaz stosowania większej ilości spacji - zakaz stosowania spacji jeśli nie znajduje się między znakami alfanumerycznymi

Siędzę z tymi wyrażeniami regularnymi, jednak czas mi się kończy i prosiłbym kogoś, kto już przez to przeszedł o napisanie mi jak powinna wyglądać zawartość ereg(i).
crash
Zapomniałeś o ograniczeniu całości z ^ i $... Tak to wygląda w Perl'owym regexie:
  1. <?php
  2. preg_match( '/^[a-z0-9 ]{1,20}$/i', $_POST[ 'uzytkownik_login' ] );
  3. ?>
dtb
twój kod nie rozwiązuje problemu 1 spacji:

[[a-zA-Z0-9]{1,}[:space:]{0,}[a-zA-Z0-9]{0,}]{1,20}
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.