PHP 字符串长度怎么获取
在做网站后台开发或者简单的工具脚本时,经常会遇到需要统计文字长度的场景——比如限制用户的昵称不能超过10个字符,或者统计文章摘要的字数。对于用PHP开发的小伙伴来说,最基础也最常用的需求,就是拿到一串文字的长度。
最常用的基础方法:strlen()函数
如果只是处理纯英文、数字、半角符号这类“单字节字符”,那用strlen()函数就够了。它的用法特别简单,直接把要统计的字符串放进括号里就行。举个生活化的例子:就像数一袋小零食的数量,每个小零食是一个单位,strlen()会把每个半角字符(比如字母a、数字5、英文逗号“,”)都算1个单位。

比如写一段代码:
$str = "Hello World";
echo strlen($str);
运行后输出的结果是11。你数一下,Hello加空格加World,一共正好11个半角字符,完全对得上。
但这里要注意一个坑:如果碰到中文、日文这类“多字节字符”,strlen()就会“数错”。比如“你好”这两个中文,每个中文占3个字节,用strlen()算的话,结果会是6,而不是我们以为的2——就像把一袋夹心饼干,把每个夹心层都当成一个独立零食数,结果就和实际数量差很多了。
处理中文的正确姿势:mb_strlen()函数
既然多字节字符不能用strlen(),PHP就专门提供了mb_strlen()这个适配多字节的函数,它会把一个完整的中文、日文或全角符号当成1个单位来统计,完全符合我们日常对“文字长度”的认知。
它的用法也很简单,只需要多传一个参数指定编码就行,比如常用的UTF-8编码。还是拿“你好”举例:
$str = "你好";
echo mb_strlen($str, 'UTF-8');
这次输出的结果就是2,和我们的预期一致。再试一个混合的例子:“Hello你好”,用mb_strlen()算的话,会输出7——其中5个英文字符加2个中文字符,正好是7个单位,不管是中文站还是中英混合的场景,这个方法都能准确统计。
特殊场景的补充:注意全角字符的差异
有时候我们还会碰到全角的数字或符号,比如“123”(全角数字),这类字符同样是多字节的,所以也需要用mb_strlen()来统计,用strlen()算的话,每个全角数字会占2个字节,结果就会变成6,而不是3。比如:
$str = "123";
echo mb_strlen($str, 'UTF-8');
输出的结果就是3,和我们数的数字个数一致,不会因为全角半角的差异出错。
最后总结一下:如果只是处理纯英文、数字、半角内容,用strlen()快速计算就好;如果碰到中文、全角字符或者需要适配多语言,一定要用mb_strlen(),并且记得指定正确的编码(一般是UTF-8),就能准确获取PHP字符串的长度啦。