Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Eregi as preg_match
Forum PHP.pl > Forum > Przedszkole
maro_a
Potrzebuję zrobić funkcje która sprawdza czy wpisany tekst jest z zakresu cyfr a-z 0-9 i ma minimum 3 znaki max 8 ze znaków specjalnych dopuszcxzam -
zrobiłem to tak :
Kod
if( ! eregi( "^[a-z0-9]{3,8}" , $this->host ) )
             throw new Exception( "Nazwa musi składać się z 3 do 8 liter (bez polskich znaków) lub cyfr lub znaku "-"" , 1 );

Jednakże jak wpisze łłł to jest ok ale jak wpisze kisieł to już przepuszcza.
Po googlowałem trochę i dowidziałem się, że lepiej zastosować preg_match próbowałem to przerobić ale jakoś nie mogę sobie poradzić jak nie przyjmuje polskich liter to przyjmuje znaki specjalne, czytałem na manul ale jakoś nie mogę to dopasować więc proszę o pomoc bo z php nie jestem za mocny :/
Lars
  1. <?php
  2. if(preg_match('^[0-9abcdefghijklmnoprstuwxyz-]{3,8}$', $this->host)) {
  3. echo 'OK';
  4. }
  5. ?>


lepiej jest używać preg_*, z uwagi na 6, nadchodzącą wersję PHP.

Pozdrawiam
maro_a
Niestety po wpisaniu takiej skłądni otrzymuje:
Kod
No ending delimiter '^' found
webdice
~maro_a pomyśl trochę, poszukaj, a nie oczekuj zawsze gotowego.

  1. <?php
  2. if(preg_match('#^[0-9abcdefghijklmnoprstuwxyz-]{3,8}$#', $this->host)) {
  3. echo 'OK';
  4. }
  5. ?>


Poza tym nie lepiej:

  1. <?php
  2. if(preg_match('#^[a-z0-9-]{3,8}$#', $this->host)) { // ewentualnie #^[a-zA-Z0-9-]{3,8}$# jeśli wielkie litery też mogą występować
  3. echo 'OK';
  4. }
  5. ?>


EDIT: Poprawiłem kod, forum wywaliło slashe.
maro_a
Szukałem i walczyłem ze skłądnią tej funkcji, ale nadal jej nie rozumiem a w szczególności tych znaków #^......$#
Dzięki wielkie za pomoc działa świetnie, jeśli ktoś potrafi mi to wyjaśnić to będę wdzięczny, lub odeśle mnie gdzie mogę poczytać o tym...
z PHP dopiero raczkuje
Crozin
http://pl2.php.net/regex
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.