2010-04-28 28 views
2

mb_strlen只给出字节数,不是我想要的。如何获取PHP中的字符数?

它应该使用多字节字符。

+0

http://docs.php.net/manual/en/function.mb-strlen.php – SilentGhost 2010-04-28 10:09:34

+0

'mb_substr'给你一个给定的多字节字符串的一个子 - 这有什么好做的字符串的长度。像其他人所建议的那样使用'mb_strlen'。 – 2010-04-28 10:13:02

回答

11

mb_strlen也许?

+0

不,这是错误的... – openid 2010-04-28 10:13:32

+2

这是正确的,也许PHP不会将您的字符串识别为多字节字符串?尝试如下所示:mb_strlen($ your_multibyte_string,$ encoding)其中编码应该是类似于“UTF-8”或“UTF-16”的文件 – jigfox 2010-04-28 10:31:21

+0

如何使用mb_strlen以及您正在测试的字符串使用什么编码? – Arkh 2010-04-28 11:18:17

0

mb_strlen字符串为,测量长度为

<?php 
$str = 'abcdef'; 
echo strlen($str); // 6 

$str = ' ab cd '; 
echo strlen($str); // 7 
?> 

直接从文档中找到。

0

如果您使用UTF-8编码步骤通过字符串中的所有字节并计算未设置第8位的字符。

此解决方案不需要mb扩展名。

6

mb_strlen()mb_internal_encoding('UTF-8')

9
mb_strlen($text, "UTF-8"); 
0

的strlen():返回的字节数,而比字符串中的字符数量多。

$name = "Perú"; // With accent mark 
echo strlen($name); // Display 5, because "ú" require 2 bytes. 

$name = "Peru"; // Without accent mark 
echo strlen($name); // Display 4 

mb_strlen():返回一个具有字符串的字符编码的字符数。多字节字符被计数为1。

$name = "Perú"; // With accent mark 
echo mb_strlen($name); // Display 4, because "ú" is counted as 1. 

$name = "Peru"; // Without accent mark 
echo mb_strlen($name); // Display 4 

iconv_strlen():返回字符串的字符计数,为整数。

$name = "Perú"; // With accent mark 
echo iconv_strlen($name); // Display 4. 

$name = "Peru"; // Without accent mark 
echo iconv_strlen($name); // Display 4 
相关问题