![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, chcę przepuszczać tylko dane zaiwerające litery i cyfry zastosowałem funkcję preg_match ale z zapewne błędnym patternem
Może ktoś popatrzeć i powiedzieć mi co jest źle (zwraca false cały czas) //edit nospor, dzięki (IMG:style_emoticons/default/wink.gif) Ten post edytował Lirdoner 8.11.2011, 15:27:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
wNogachSpisz: w zasadzie masz rację. Problem może pojawić się przy znakach narodowych. Popraw mnie, jeśli się mylę, ale... ctype_alnum ich nie uwzględni nawet przy ustawieniu locale (nie miałem okazji użyć tej funkcji nigdy), manual mówi tylko o stosowaniu jej przy "standard C locale". W takim układzie ctype_alnum wymięka na rzecz wyrażeń regularnych. Na plus dla ctype_alnum można powiedzieć tylko jedno: jest dużo szybsza od preg_match (circa 3 razy). Na minus - znaki narodowe (choć powtórzę to jeszcze raz: to moje domniemanie).
Co do pierwszego pytania: oryginalnie zapisane wyrażenie '/^([0-9a-zA-Z])$/' można zoptymalizować. Oprócz poprawek, które zaproponował nospor (by to w ogóle działało), można to zapisać bez okrągłych nawiasów - wydaje mi się (i to bardzo), że są tu niepotrzebne. Okrągłe nawiasy to znak grupowania (subpatterns): http://pl.php.net/manual/en/regexp.reference.subpatterns.php - tu wynik nigdzie nie jest używany, więc grupowanie nie jest potrzebne. Ten post edytował abort 8.11.2011, 23:13:13 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 06:00 |