Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtr polskich znaków
Forum PHP.pl > Forum > PHP
Robert007
Witam,

Mam problem z wyrażeniem regularnym w preg_match. Potrzebuje filtr który by przepuszczał tylko znaki 0-9 a-z A-Z oraz znaki polskie ¶ćóę itd.
Zrobiłem to tak:

  1. if(preg_match('/^([a-z0-9]+)$/i', $tekst)) return true;


Ok to przepuszcza wył±cznie a-z 0-9 a jak zrobić jeszcze by działało na znaki polskie?
Magic WWW
  1. if(preg_match('#^[a-z0-9\p{L}]+$#ui', $tekst)) return true;


Pozdrawiam Dawid smile.gif
Robert007
Nie przepuszcza mi "dfsd¶fsd556" gdy dodałem '¶' to już nie chce przepu¶cić.
cycofiasz
Wstaw te litery po prostu po 0-9
Robert007
To samo jest. Mam tak:
  1. if(preg_match('/^([A-Za-z0-9±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż]+)$/i', $tekst)) return true;
Magic WWW
Hmm to rozwi±zanie co Ci podałem wyżej mam w CMS swoim i działa poprawnie. To musisz lecieć po schodkach.

  1. if(preg_match('#^[a-z0-9±ćęłń󶿼ˇĆĘŁŃӦݬ]+$#i', $tekst)) echo 'ok';
Robert007
Nadal nie przepuszcza. Dlaczego?
cycofiasz
Być może strona kodowa dokumentu jest inna niż kodowanie zmiennej $tekst
Robert007
Na Firefox działa a na google chrome nie. Jak ustawić kodowanie na chrome ?
piotr94
1. plik musisz zakodować w kodowaniu UTF-8 - np. programem notepad++ Format>Konwertuj na UTF-8 bez BOM
2. poprawny header:
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
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.