Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrazenia Regularne
Forum PHP.pl > Forum > Przedszkole
fido20
Witam

Mam formularz ktorego jedno z pól to imie i nazwisko własciciela chciałem ułożyć wyrażenie regularne które by sprawdzało mi poprawność wprowadzonych danych. Zakładam że w ciagu bedza same znaki alfabetyczne, poza tym ze bedzie skladal sie przynajmniej z dwoch członów oddzielonych jedną spacją. Napisałem takie wyrażenie, ale coś w nim jest nie tak bo nie przepuszcza zadnych danych :/

  1. <?php
  2.  
  3. if (!ereg('^[a-zA-Z]+[[:space:]][a-zA-Z]+$', $_POST['nr_wlasciciel']))
  4. {
  5.   echo 'Podaj poprawne Imie i Nazwisko';
  6. }
  7.  
  8. ?>


Są to moje pierwsze kroczki w wyrażeniach regularnych dlatego prosiłbym o pomoc z ewentualnymi komentażami.


PS.
Jak zapisac to wyrazenie aby sprawdzalo czy poszczegolny czlon zaczyna sie od durzej litery ?
Heh juz wiem gdzie byl bład wpisalem złą zmienna w $_POST dlatego nie przepuszczalo nic smile.gif jednak nadal prosze o ocenienie tego wyrazenia czy jest dobrze skonstruowane zeby spelnialo wrunek który opisalem wyzej
kicaj
Po [[:space:]] tez mozna dac +

Czy pierwsza litera jest duza?
Cos takiego, moze to mozna lepszym sposobem:
^[A-Z]{1}[a-z]+...
fido20
Hmm niestety

Poday wzorzec pozwala wprowadzic tylko dwa czlony , jak zrobic zeby pozwala wprowadzic wiecej ?

  1. <?php
  2.  
  3. if (!ereg('^[A-Z]{1}[a-z]+[[:space:]]+[A-Z]{1}[a-z]+$', $_POST['wlasciciel']))
  4.  
  5. ?>
FiDO
Wiecej?? Tzn. zakladasz ze ktos moze podac dwa imiona?
  1. <?php
  2.  
  3. if (!preg_match('#^[A-Z][a-z]+( [A-Z][a-z]+){1,2}$#', $pole) )
  4. {
  5.   // blad...
  6. }
  7.  
  8. ?>

Pozwoli to wprowadzic dwa lub trzy czlony oddzielone spacjami skladajace sie z liter (pierwsza duza). Jak chcesz jeszcze wiecej to zwieksz 2 w nawiasie klamrowym.
fido20
Witam, nie chcialem zasmiecac forum i zakladac nowego tematu wiec pisze tutaj gdyz zagadnienie zblizone jest do tematu.

Mam ciag

|1111|1211|1311|1411|2111|2211|2311|2411|2511|3111|3211|3311|3411|3511|4111|

Chciałbym aby wyrażenie regularne znajdywało mi w tym ciagu takie cos |2511|

Probowalem czegos takiego :

  1. <?php
  2.  
  3. eregi('^|2511'&#092;|$', $ciag);
  4.  
  5. ?>

Ale niestety nie działa :/
rogrog
nie warto używać do tego regexp, wystaczy strpos" title="Zobacz w manualu PHP" target="_manual

na pierwszy rzut oka - masz taki bład że masz ograniczony ciag znakow (^ i $) więc wyrażenie może zwrócić true tylko jeżeli ciag nie zawiera niczego innego oprócz |2511|
fido20
Cytat(rogrog @ 2004-09-21 17:51:51)
nie warto używać do tego regexp, wystaczy strpos" title="Zobacz w manualu PHP" target="_manual

na pierwszy rzut oka - masz taki bład że masz ograniczony ciag znakow (^ i $) więc wyrażenie może zwrócić true tylko jeżeli ciag nie zawiera niczego innego oprócz |2511|

Miałes racje teraz jest ok smile.gif
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.