Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Eregi as preg_match
maro_a
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.02.2008

Ostrzeżenie: (0%)
-----


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 :/
Go to the top of the page
+Quote Post
Lars
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


  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


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post
maro_a
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.02.2008

Ostrzeżenie: (0%)
-----


Niestety po wpisaniu takiej skłądni otrzymuje:
Kod
No ending delimiter '^' found
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




~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.
Go to the top of the page
+Quote Post
maro_a
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.02.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


http://pl2.php.net/regex
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:35