Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Możliwo¶ć użycia dużych i małych liter, spacji oraz cyfr + POLSKIE ZNAKI
Forum PHP.pl > Forum > Przedszkole
Mody23
  1. preg_match( "/^[a-zA-Z0-9 ]+$/" , $title)


Wiadomo, rozwi±zanie dobre, bo nie trzeba się głowić jakich znaków zakazać przy użyciu tylko działamy w drug± stronę - jakich znaków można używać. Jednak potrzebuję dorzucić tam polskie ogonki - ˇ±Ę꯿¬ĽÓ󣳦¶ĆćŃń. Jak to zrobić?
Daimos
  1. preg_match( "/^[a-zA-Z0-9 ˇ±Ę꯿¬ĽÓ󣳦¶ĆćŃń]+$/" , $title)

wystarczy tak wink.gif
Evinek
  1. preg_match( "/^[a-z±ćęłńó¶ĽżA-ZˇĆĘŁŃÓ¦¬Ż0-9 ]+$/" , $title)

Powinno być okej.
Po prostu poszukałem w google... http://forum.php.pl/index.php?showtopic=178355

@UP:
Znów kto¶ przede mn± lekko. ;/
Mody23
Problem w tym, że tak już próbowałem i to nie się nie spisuje...Próbowałem tak:
  1. preg_match( "/^[a-z±ężĽół¶ćń-ZˇĘŻ¬ÓŁ¦ĆŃ0-9 ]+$/" , $title)


Oraz tak:

  1. preg_match( "/^[a-z-Z0-9 ˇ±Ę꯿¬ĽÓ󣳦¶ĆćŃń]+$/" , $title)


Ale to nic nie daje...
Daimos
upewnij się, że plik php masz zapisany w tym samym kodowaniu, jakie otrzymujesz np. w formularzu. Sam sprawdĽ, że działa:
  1. <?php
  2.  
  3. $stringValid = '±¶ zxfe 4543';
  4. $stringInvalid = '±¶ zxfe # 4543';
  5.  
  6. preg_match( "/^[a-z-Z0-9 ˇ±Ę꯿¬ĽÓ󣳦¶ĆćŃń]+$/" , $stringValid), // zwraca true
  7. preg_match( "/^[a-z-Z0-9 ˇ±Ę꯿¬ĽÓ󣳦¶ĆćŃń]+$/" , $stringInvalid) // zwraca false
  8. );
Mody23
Faktycznie, nie pomy¶lałem, bo mam problem z polskimi znakami ogólnie, s± krzaki i to zapewne tego wina. A w nagłówku HTMLowym zdefiniowane mam iso-8859-2, to samo w notepad++ więc nie wiem dlaczego w efekcie dostaję krzaki ;/
Daimos
korzystaj z UTF-8. Ustaw dokument na utf-8 i póĽniej w nagłówku html też wstaw UTF-8, a je¶li chcesz na siłę zostać przy iso, to upewnij się w przegl±darce, że faktycznie wy¶wietla tre¶ć w takim kodowaniu jak poprosiłe¶, może jaka¶ literówka
Evinek
UTF8 w meta.
W notepad++ plik na UTF8 - bez BOM.
Mi to zawsze działa. smile.gif

@UP:
Trzeci raz kto¶ napisał parę sekund szybciej niż ja! -.-
Mody23
Dobra, poszło, dzięki wink.gif
Ale pojawił się kolejny problem:

  1. $page = str_replace(array(" ", "ˇ", "±", "Ę", "ę", "Ł", "ł", "¦", "¶", "Ć", "ć", "Ń", "ń", "/^[A-Z]+$/"), array("-", "A", "a", "E", "e", "L", "l", "S", "s", "C", "c", "N", "n", "/^[a-z]+$/"), $page);


Mimo tego, polskie ogonki nadal występuj± :/
Evinek
Po 1. Mi to działa - prócz zmiany na małe litery.
Po 2. Brakuje Ci parę literek (Ż, ¬, Ó)

Do zmiany na małe literki daj:
strtolower($page);
Mody23
hm...

Mam tak± funkcje:

  1. function code_page_id($page)
  2. {
  3. $page = str_replace(array(" ", "ˇ", "±", "Ę", "ę", "Ł", "ł", "¦", "¶", "Ć", "ć", "Ń", "ń", "/^[A-Z]+$/"), array("-", "A", "a", "E", "e", "L", "l", "S", "s", "C", "c", "N", "n", "/^[a-z]+$/"), $page);
  4. return strtolower($page);
  5. }


Robię var_dump'a:

  1. var_dump(code_page_id('¶ć'));


A zwraca mi length 2 '¶ć' ;/
Evinek
  1. <?php
  2. function code_page_id($page)
  3. {
  4. $page = str_replace(array(" ", "ˇ", "±", "Ę", "ę", "Ł", "ł", "¦", "¶", "Ć", "ć", "Ń", "ń", "/^[A-Z]+$/"), array("-", "A", "a", "E", "e", "L", "l", "S", "s", "C", "c", "N", "n", "/^[a-z]+$/"), $page);
  5. return strtolower($page);
  6. }
  7.  
  8. var_dump(code_page_id('¶ć'));
  9. ?>

Wynik:

string(2) "sc"

Co¶ musisz mieć pomieszane, wszystko działa.

PS. Dodaj jeszcze litery: Ó Ż ¬.
Daimos
ponownie, sprawdĽ kodowanie w przegl±darce i w pliku
a tak na marginesie, do czego Ci w tamtej tablicy podawanej do str_replace wyrażenie regularne: "/^[A-Z]+$/" questionmark.gif
Mody23
Co¶ musi być z kodowaniem...Je¶li zamieniam sobie a na b to bez problemu się zamienia...
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.