php 7.3 中判断字符串长度需区分字节与字符:strlen() 统计字节数(含所有空白),mb_strlen(..., 'utf-8') 统计字符数(全角空格算1字符),trim 后判长度可安全检测纯空白字符串。

PHP 7.3 中判断字符串长度(含空白字符)的关键是:**明确“长度”指字节数还是字符数,同时决定是否保留空白字符参与计数**。
直接获取原始字节长度(含所有空白)
用 strlen() 最快、最准确——它统计的是字节个数,空格、制表符 \t、换行符 \n、回车符 \r 等所有 ASCII 空白字符各占 1 字节,UTF-8 中文空格(如全角 )占 3 字节,全部如实计入:
-
strlen(" a ")→ 返回 3(空格 + a + 空格) -
strlen(" 你好")(含全角空格)→ 返回 9(全角空格 3 字节 + “你好”各 3 字节) - 注意:
strlen(null)在 PHP 7.3 会触发 Warning,strlen([])或strlen(123)同样报错,务必确保变量是字符串类型或先兜底
按用户感知的字符数统计(含空白字符)
若需统计“有几个可见/不可见字符”,比如表单限制“最多 20 个字符(含空格)”,必须用 mb_strlen() 并显式指定编码:
-
mb_strlen(" a ", 'UTF-8')→ 返回 3 -
mb_strlen(" 你好", 'UTF-8')→ 返回 4(全角空格算 1 字符,“你好”各 1 字符) - 不写第二个参数可能依赖
mb_internal_encoding(),PHP 7.3 默认常为ISO-8859-1,会导致中文返回错误结果,所以必须写 'UTF-8' - 确保
mbstring扩展已启用(PHP 7.3 默认开启,可用extension_loaded('mbstring')验证)
排除空白字符后判断有效内容长度
如果目标是“去掉首尾空白后是否为空”,但又想保留中间空格(如用户名允许中英文间有空格),推荐组合使用:
-
mb_strlen(trim($str, " \t\n\r\0\x0B"), 'UTF-8')—— 去除常见空白后再计字符数 - 要更彻底清理 Unicode 空白(如 、零宽空格 U+200B),可用正则:
mb_strlen(preg_replace('/\s+/u', '', $str), 'UTF-8') - 注意:
trim($str)对 null 或非字符串会静默转成字符串(如trim(null)得''),若需严格类型安全,先加is_string($str)判断
安全判断空字符串(含纯空白)
若需求是“该字符串是否只有空白或完全为空”,不要用 empty()(它把 "0"、0 也判为空),也不要用 == ''("\t" 不等于 '' 却是空白):
- 最准写法:
mb_strlen(trim($str), 'UTF-8') === 0 - 兼顾性能与兼容性(无 mbstring 时):
strlen(trim($str)) === 0(仅限 ASCII 空白场景) - 避免陷阱:
empty(trim($str))虽常用,但若$str === "0",trim("0")还是"0",而empty("0")为false,逻辑正确;但若误传数字0,trim(0)得"0",仍不会误判——此写法在 PHP 7.3 中对纯空白字符串是可靠的
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











