PHP统计字符串的长度(strlen()和mb_strlen())
计算字符串的长度经常在很多应用中出现,比如在输入框输入文字的长度就会用到此功能。在 PHP 中,使用 strlen() 函数就可以实现这个功能。
strlen() 函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为 1。一个中文字符占两个字节,所以一个中文字符的长度是 2。
以下实例介绍计算字符串长度的方法和技巧:
当出现中英文混排的情况时,怎么准确地计算字符串的长度呢?这里需要使用另一个函数 mb_strlen()。
mb_strlen() 函数的用法与 strlen() 几乎一模一样,只是多了一个指定字符集编码的参数。
mb_strlen()函数的语法格式如下:
下面的案例将准确计算出中文字符串的长度。
mb_strlen()计算时,选定内码为 UTF8,将一个中文字符当作长度 1 来计算,所以“山际见来烟,竹中窥落日。”长度为 12×1=12。
strlen() 函数返回字符串所占的字节长度,一个英文字母、数字、各种符号均占一个字节,它们的长度均为 1。一个中文字符占两个字节,所以一个中文字符的长度是 2。
以下实例介绍计算字符串长度的方法和技巧:
<?php echo strlen("https://c.biancheng.net/"); echo "<br"; echo strlen("山际见来烟,竹中窥落日。"); ?>运行结果为:
24
36
当出现中英文混排的情况时,怎么准确地计算字符串的长度呢?这里需要使用另一个函数 mb_strlen()。
mb_strlen() 函数的用法与 strlen() 几乎一模一样,只是多了一个指定字符集编码的参数。
mb_strlen()函数的语法格式如下:
int mb_strlen(string string_input, string encode);PHP 内置的字符串长度函数 strlen() 无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于 GB2312 的中文编码,strlen() 得到的值是汉字个数的 2 倍,而对于 UTF-8 编码的中文,就是 3 倍的差异了(在 UTF-8 编码下,一个汉字占 3 个字节)。
下面的案例将准确计算出中文字符串的长度。
<?php echo strlen("山际见来烟,竹中窥落日。"); echo "<br/>"; echo mb_strlen("山际见来烟,竹中窥落日。","UTF8"); ?>运行结果为:
36
12
mb_strlen()计算时,选定内码为 UTF8,将一个中文字符当作长度 1 来计算,所以“山际见来烟,竹中窥落日。”长度为 12×1=12。