2010-09-04 20 views
5

Khi đếm độ dài của chuỗi UTF-8 trong PHP, tôi sử dụng mb-strlen().mb_strlen() là đủ?

Ví dụ:

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

Như các lĩnh vực văn bản có thể chấp nhận bất kỳ ngôn ngữ (đa ngôn ngữ), tôi muốn chắc chắn rằng PHP sẽ đếm mutltilanguage UTF-8 ký tự một cách chính xác.

Điều này có đủ hoặc tôi có cần sử dụng các phương pháp khác không? Tôi lo ngại PHP có thể làm cho nó sai vì một lý do nào đó, hoặc có lẽ tôi chỉ là hoài nghi, nhưng tôi không muốn mọi người bỏ qua việc xác nhận quan trọng bởi vì PHP đang làm sai.

Trả lời

18

Đúng

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

đảm bảo tiêu đề là đúng

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

bạn cũng có thể kiểm tra thay thế cho một số lý do

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

+0

Cảm ơn JapanPro. Tiêu đề HTTP của tôi tốt cho cảm ơn bạn. Sẽ kiểm tra liên kết đó. Vì vậy, tôi đoán mb_strlen() có thể được tin cậy sau đó là tiêu đề http của tôi là như bạn đã nói ở trên? Cảm ơn! – PHPLOVER

1

Ngoài câu trả lời JapanPro của:
HTML của bạn có thể có:

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

thay vì một lời tuyên bố tiêu đề tiềm ẩn:

HTTP-header (Content-Type: text/html; charset=UTF-8) 
Các vấn đề liên quan