Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match
Forum PHP.pl > Forum > Przedszkole
-qwerty-
Jak napisać prega, aby przepuszczał tylko małe/duże/polskie litery z JEDNĄ spacją lub bez spacji?
próbowałem na tak i podobnie:
  1. if(!preg_match("/^[A-Za-zążśźćęńół]+ [A-Za-zążśźćęńół]+$|^[A-Za-zążśźćęńół]+$/", $zmienna)

ale nie idzie mi ;/
Sephirus
  1. if(!preg_match("/^([A-Za-zążśźćęńółĄŻŚŹĘĆŃŁÓ]+\s[A-Za-zążśźćęńółĄŻŚŹĘĆŃŁÓ]+)|([A-Za-zążśźćęńółĄŻŚŹĘĆŃŁÓ]+)$/", $zmienna)


@qrzysztof - racja - dzięki smile.gif poprawione
qrzysztof
Dużego Ł brakuje (oraz Ó o ile potrzebne).



  1. if(!preg_match("/^([A-Za-zążśźćęńółĄŁÓŻŚŹĘĆŃ]+\s?[A-Za-zążśźćęńółĄŁÓŻŚŹĘĆŃ]+)$/", $zmienna)
Gość
No właśnie nie do końca działa...
  1. $test = preg_match("/^([A-Za-zążśźćęńółĄŻŚŹĘĆŃ]+\s[A-Za-zążśźćęńółĄŻŚŹĘĆŃ]+)|([A-Za-zążśźćęńółĄŻŚŹĘĆŃ]+)$/", $_POST['miasto']);
  2. if($test == 1){
  3. echo $test;}else{echo $test;}
  4.  
  5. //jesli $_POST['miasto'] przyjmie wartosc: blabla44 hmm ups
  6. echo 1 // czyli TRUE mimo, że wklepałem 44 i dałem 3spacje (już mniejsza o spacje)
  7. //jesli $_POST['miasto'] przyjmie wartosc: costam55
  8. echo 0 // czyli FALSE tak jak być powinno
  9.  
  10. //puszcza tez cos takiego: df sdf#%$#^# srg





qrzysztof
To przez tę alternatywę, którą tam masz (|). Zerknij na moją uproszczoną wersję. Tam zamiast alternatywy masz spację występującą 0 lub 1 raz.

Wadą mojego jest z kolei, że jeśli wpiszesz pojedynczą literę to nie przepuszcza (dopiero dwuliterowy wyraz), ale to też można poprawić jeśli ma przepuszczać.
Gość
@qrzysztof

Jesteś WIELKI exclamation.gif thumbsupsmileyanim.gif

A jeśli chciałbym dodać do tego niemieckie litery, to czy mogę je wstawić w dowolnym miejscu czy istnieje jakaś przymusowa kolejność?

qrzysztof
Kolejność dowolna.

I jeszcze mała uwaga jeśli to ma być miasto to są i 3 wyrazowe miasta (choć to rzadkość np. Nowy Dwór Mazowiecki). Natomiast częściej mają myślnik w nazwie np Bielsko-Biała).
Gość
Bardzo zależy mi na spacjach, aby później to prze-formatować na linka (spacja=_) oraz aby wyświetlić całą nazwę. I faktycznie dziękuję za uwagę, że miasta mają też trzy członowe nazwy. Lekko go przerobiłem i śmiga jak tralala biggrin.gif
Jeszcze raz, wielkie dzięki - Google też będzie Ci wdzięczne. wink.gif
  1. if(strlen($_POST['miasto']) >= 2){
  2. $sdf = preg_match("/^([A-Za-zążśźćęńółĄŁÓŻŚŹĘĆŃ]+\s?[A-Za-zążśźćęńółĄŁÓŻŚŹĘĆŃ]+\s?[A-Za-zążśźćęńółĄŁÓŻŚŹĘĆŃ]+)$/", $_POST['miasto']); //do 3 spacji + litery
  3. if($sdf == 1){
  4. echo $sdf;
  5. }else{echo $sdf;}
  6. }
Crozin
Do określania rodziny znaków "litery" używa się \p{L}, a nie listuje ich wszystkich (ok. 550 w Unikodzie).
Gość
Crozin, to przypadkiem nie jest tylko dla UTF-8?
Ja mam charset=iso-8859-2. Co prawda i tak widzę krzaki, ale to później do tego dojdę.
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.