2010-09-04 7 views
5

Quando si conta la lunghezza di una stringa UTF-8 in PHP, utilizzo mb-strlen().mb_strlen() è sufficiente?

Ad esempio:

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

Come i campi di testo possono accettare qualsiasi lingua (multilingue), voglio fare in modo che PHP conterà correttamente mutltilanguage caratteri UTF-8.

È sufficiente o è necessario utilizzare altri metodi? Sono preoccupato che PHP possa sbagliare per qualche motivo, o forse sono solo scettico, ma non voglio che le persone ignorino importanti convalide perché PHP sta sbagliando.

risposta

18

corretta

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

assicurarsi intestazione è corretta

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

è possibile anche verificare alternativa, per qualche motivo

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

+0

Grazie JapanPro. Il mio header HTTP va bene grazie. Verificherà questo collegamento. Quindi suppongo che mb_strlen() possa essere considerato affidabile in quanto il mio header http è come hai detto sopra? Grazie! – PHPLOVER

1

Oltre a risposta di JapanPro:
tuo HTML può avere:

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

invece di una dichiarazione di intestazione implicita:

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