2010-09-04 53 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)