Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]strlen() i polskie znaki...
olechafm
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
rocktech.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

Ostrzeżenie: (0%)
-----


Użyj funkcji mb_strlen.


--------------------
Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore

I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim


Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek
Go to the top of the page
+Quote Post
olechafm
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

Ostrzeżenie: (0%)
-----


Dzięki, działa.

Rozumiem, że funkcja strlen z definicji rozbija znaki wielobitowe na pojedyncze bity i każdy zlicza?
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
olechafm
post
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(olechafm @ 9.10.2010, 14:31:35 ) *
Mówisz już o mb_strlen

Pytales o strlen wiec odpowiedzialem... smile.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
olechafm
post
Post #7





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

Ostrzeżenie: (0%)
-----


Dzięki.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:25