Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]strlen() i polskie znaki...
Forum PHP.pl > Forum > Przedszkole
olechafm
Jaki może być powód błednego zliczania przez funkcję strlen() polskich znaków diakrytycznych? Funkcja zlicza mi każdy taki znak podwójnie.
  1. $userlogin=trim($_POST['userlogin']);
  2.  
  3.  
  4. if (!isset($userlogin) || ($userlogin=='')){
  5. echo "Podaj Login!<br />";
  6. $error=1;
  7. }else {
  8.  
  9. if (strlen($userlogin)>25 || (strlen($userlogin)<5)){
  10. echo "Login może mieć minimalnie 5 maksymalnie 25 znaków!<br />";
  11. $error = 1;
  12. }else {
  13.  
  14. if (!eregi('^[a-zA-Z0-9±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż_\-]+$', $userlogin)){
  15. echo "Login może zawierać jedynie małe i wielkie litery alfabetu, znak '-' i '_' oraz cyfry!<br />";
  16. $error = 1;
  17. }
  18. }
  19. }
rocktech.pl
Użyj funkcji mb_strlen.
olechafm
Dzięki, działa.

Rozumiem, że funkcja strlen z definicji rozbija znaki wielobitowe na pojedyncze bity i każdy zlicza?
Fifi209
Cytat(olechafm @ 9.10.2010, 14:01:18 ) *
Dzięki, działa.

Rozumiem, że funkcja strlen z definicji rozbija znaki wielobitowe na pojedyncze bity i każdy zlicza?


Bardziej: znaki "polskie" takie jak: ±ę s± zapisane w dwóch bitach, a on zlicza jako 1 bit = 1 znak.
olechafm
Cytat(fifi209 @ 9.10.2010, 14:27:48 ) *
Bardziej: znaki "polskie" takie jak: ±ę s± zapisane w dwóch bitach, a on zlicza jako 1 bit = 1 znak.



Mówisz już o mb_strlen, ona ignoruje ilo¶ć bitów na każdy znak i zlicza jako jeden, strlen zwykła zlicza każdy bit ?
Fifi209
Cytat(olechafm @ 9.10.2010, 14:31:35 ) *
Mówisz już o mb_strlen

Pytales o strlen wiec odpowiedzialem... smile.gif
olechafm
Dzięki.
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.