Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenie regularne - jeden lub dwa wyrazy
gregiolo
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.02.2010
Skąd: Warszawa

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


Witam serdecznie,

W jaki sposób uzyskać wyrażenie regularne określające dopuszczalne użycie w stringu:
- jednego LUB dwóch wyrazów oddzielonych spacją o minimalnej długości znaków 3?

To udało mi się uzyskać dla pojedyńczego wyrazu:
/^[0-9a-zA-Ząćęłńóśźż]{3,}$/D

Nie wiem jak umiejscowić w tym jedną spację w założeniu LUB. ;/

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gregiolo
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.02.2010
Skąd: Warszawa

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


Witam,
Dziekuje za zaangażowanie, dopiero dziś byłem w stanie odczytać post. Rzeczywiście można to było zrozumieć dwuznacznie.

Chodziło mi o jeden lub dwa wyrazy. Jeżeli istniałyby dwa, to powinne być oddzialone pojedynczą spacją. Każdy wyraz (bez względu, czy wystąpi jako jeden czy jako dwa) powinien posiadać minimalną długość trzech znaków. (IMG:style_emoticons/default/smile.gif) Zdaje się, że rozwiązanie padło zatem. (IMG:style_emoticons/default/smile.gif)

Skoro tak go rozłożyliśmy na części pierwsze dopiszę problematykę.

Projektowałem wzorzec do nazwy obiektu turystycznego. Rzadko zdarzają się trój wyrazowe nazwy, zostałem zatem przy dwóch. Obiekt turystyczny może przyjmować zatem jeden lub dwa wyrazy.
Np.
- Perła Południa
- Hańcza

Minimum wymagam ze względów estetycznych oraz z uwagi, że nazwa jest również przekształcana w subdomenę przez inny wzorzec. (IMG:style_emoticons/default/smile.gif)

Ostateczna odpowiedź to zatem:
  1. preg_match('/^([0-9a-zA-Ząćęłńóśźż]{3,}+)( [0-9a-zA-Ząćęłńóśźż]{1,}+)?$/', $str, $matches);
  2. print_r($matches);

Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 12:57