2010-09-04 50 views
5

当在PHP中计算UTF-8字符串的长度时,我使用mb-strlen()mb_strlen()够了吗?

例如:

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

由于文本字段可以接受任何语言(多语言),我想确保PHP会正确计算mutltilanguage UTF-8字符。

这是足够的还是我需要使用其他方法?我担心PHP出于某种原因可能会出错,或者我只是持怀疑态度,但我不希望人们绕过重要的验证,因为PHP是错误的。

回答

18

正确

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

确保头是正确

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

,你也可以检查替代出于某种原因

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

+0

感谢JapanPro。 我的HTTP头很好,谢谢。 将检查链接。所以我想mb_strlen()可以被信任,然后我的http头像你上面说的那样? 谢谢! – PHPLOVER 2010-09-04 04:42:45

1

除了JapanPro的回答:
你的HTML可以有:

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

,而不是一个隐含的头部声明:

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