我想获得Shift-jis和Utf-8的strlen(),然后比较它们。 字符串可以混合“ああ12345678sdfdszzz”。我试图使用strlen但它会产生不同的结果。 mb_strlen也没有帮助,因为这是一个混合字符串。
例如:
ああ12345678 >> strlen() = 24 chars
ああああああああああああああああ >> strlen() = 48 chars
ああああああああああああああああああ >> strlen() = 54 chars
似乎没有规则。那么计算strlen并在多语言中比较它们的最佳方法是什么?
答案 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');