2010-09-04 29 views
5

Podczas liczenia długości ciągu znaków UTF-8 w PHP używam mb-strlen().mb_strlen() czy to wystarczy?

Na przykład:

if (mb_strlen($name, 'UTF-8') < 3) { 
    $error .= 'Name is required. Minimum of 3 characters required'; 
} 

jak pola tekstowe mogą przyjąć dowolny język (Multilanguage), chcę, aby upewnić się, że PHP będzie liczyć mutltilanguage znaków UTF-8 poprawnie.

Czy to wystarczy, czy trzeba użyć innych metod? Obawiam się, że PHP może z jakiegoś powodu go zepsuć, a może po prostu jestem sceptyczny, ale nie chcę, aby ludzie omijali ważną weryfikację, ponieważ PHP robi to źle.

Odpowiedz

18

Prawidłowe

if (mb_strlen($name, 'UTF-8') < 3) is sufficient enough 

upewnić nagłówek jest poprawny

HTTP-header (Content-Type: text/html; charset=UTF-8) 

można również sprawdzić alternatywę dla jakiegoś powodu

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

+0

Thanks JapanPro. Mój nagłówek HTTP jest w porządku, dziękuję. Sprawdzi to łącze. Więc myślę, że mb_strlen() może być zaufany, jak mój nagłówek http jest tak, jak powiedzieliście powyżej? Dzięki! – PHPLOVER

1

Oprócz JapanPro za odpowiedź:
Twój HTML może mieć:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

zamiast niejawny deklaracji nagłówka:

HTTP-header (Content-Type: text/html; charset=UTF-8)