如何strlen多语言字符串

时间:2012-02-13 07:02:29

标签: php multilingual strlen

我想获得Shift-jis和Utf-8的strlen(),然后比较它们。 字符串可以混合“ああ12345678sdfdszzz”。我试图使用strlen但它会产生不同的结果。 mb_strlen也没有帮助,因为这是一个混合字符串。

例如:

ああ12345678 >> strlen() = 24 chars
ああああああああああああああああ >> strlen() = 48 chars
ああああああああああああああああああ >> strlen() = 54 chars

似乎没有规则。那么计算strlen并在多语言中比较它们的最佳方法是什么

3 个答案:

答案 0 :(得分:6)

strlen只计算字节数,因此仅对single-byte character encodings有用;使用mb_strlen代替可以计算实际字符的multi-byte character encodings

答案 1 :(得分:2)

我会编写一个函数来检查特定编码存在的位置。

然后我将字符串拆分为编码,执行mb_strlen并总结后面的大小。然后在第二个字符串上重复并进行比较。

我想你明白我的观点;)

PS:使用mb_detect_encoding检测编码

mb_detect_encoding (see the comments for further ideas by the php community)

答案 2 :(得分:0)

$field = $_POST['field'];
$field_length = mb_strlen($field,'utf-8');