mb_strlen()就够了吗?

时间:2010-09-04 04:08:30

标签: php utf-8 multilingual mbstring

在PHP中计算UTF-8字符串的长度时,我使用mb_strlen()

例如:

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

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

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

2 个答案:

答案 0 :(得分:19)

<强>正确

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

答案 1 :(得分:1)

除了 JapanPro的回答:
您的HTML可以包含:

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

而不是隐式标头声明:

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