Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kłopot z ereg [spacja]
dareckiphp
post
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

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


Pomóżcie napisać mi eregi, gdzie waliduję nazwisko:
Napisałem tak:
  1. <?php
  2. if (eregi ('^[a-zęóąśłżźćń ]+$', $imie)){...}
  3. ?>

Musiałem dodać spację, ponieważ zawsze może być imie, np. Jan Maria....
Ale problem w tym, że user może wpisać tylko spację i to też zostanie zaakceptowane. Jak napisać walidację, żeby akceptowany był ten ciąg znaków, ale żeby na początku nie mogła pojawić się spacja lub jej wielokrotność.
dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Dabroz
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


  1. <?php
  2. if (eregi ('^[a-zęóąśłżźćń][a-zęóąśłżźćń ]+$', $imie)){...}
  3. ?>


Ten post edytował Dabroz 28.07.2004, 16:57:05
Go to the top of the page
+Quote Post
Yarecki
post
Post #3





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Gdynia

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


Skożystaj z funkcji trim, która usuwa białe znaki z początku i końca łańcucha. Poźniej przepuść taki łańcuch przez swój eregi.
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  1. <?php
  2.  
  3. if (preg_match('#^[a-zążśźęćńół]+( [a-zążśźęćńół]+)?$#i', $imie) { ... }
  4. // lub tak (to jest to samo, tylko inaczej)
  5. if (preg_match('#^[^W_0-9]+( [^W_0-9]+)?$#i', $imie) { ... }
  6.  
  7. ?>
Go to the top of the page
+Quote Post
dareckiphp
post
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

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


Wielkie dzięki, podpowiedź FiDO działa, ale mam prośbę o rozszyfrowanie początku i końca tego cuda, bo nic nie dało przeglądanie manuala, a i książka dała za wygraną:
- co oznacza znak "#" na początku
- znak + wewnątrz nawiasu ()
- no i wyrażenie ?$#i

Dzięki wielkie i sorry za upierdliwość, ale lubie wiedzieć co wypisują w skryptach.
Go to the top of the page
+Quote Post
FiDO
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat
- co oznacza znak "#" na początku

To jest ogranicznik wyrazenia regularnego. W wyrazeniach w formacie PCRE, czyli wszystkich ktorych uzywa sie w funkcjach preg_* sa zapisywane w postaci #wyrazenie#flagi
Znak ten moze byc prawie, ze dowolny, wiekszosci stosuje / (/wyrazenie/), mi sie spodobal akurat # (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Cytat
- znak + wewnątrz nawiasu ()

Znak + odnosi sie do poprzedniego elementu, ktorym jest klasa znaków [...] i oznacza, ze ten poprzedni element (w tym przypadku litera) musi wystapic co najmniej raz (no bo pustych imion nie uwzgledniamy).
Cytat
- no i wyrażenie ?$#i

Znak zapytania tyczy się nawiasu (bo wlasnie po nim sie znajduje) i znaczy on mniej wiecej tyle, ze to co jest w tym nawiasie jest opcjonalne, tzn moze wystapic ale nie musi (to jest drugie imie, ktore jak wiadomo nie musi wystapic, ale moze)
Dalej jadac mamy dolara, ktory znaczy ze w tym miejscu musi wystapic koniec stringa, czyli po imieniu (jednym lub dwoch) nie moze juz byc nic, nawet spacji.
Potem jest znowu # co znaczy, ze w tym miejscu konczy sie wyrazenie i dalej sa juz tylko flagi. Flaga i ustawia tryb case-insensitive, czyli taki, ze wielkosc liter nie ma znaczenia.
Cytat
Dzięki wielkie i sorry za upierdliwość, ale lubie wiedzieć co wypisują w skryptach.

Balem sie, ze nie zapytasz..
Bardzo dobrze, ze lubisz wiedziec, za to masz plusa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 23:50