电话
400 9058 355
php 的 `empty()` 函数对 `0`、`null`、`false` 等值返回 true,但无法识别 `" "`、`"0.00"`、`".0"` 等语义上“空”的字符串;本文提供可扩展的自定义空值校验方案,兼顾健壮性与业务适配性。
在实际 Web 开发中(如表单验证、API 参数清洗),我们常需判断用户输入是否“真正为空”——这里的“空”往往超出 PHP 内置 empty() 的语义范围。例如:
而原生 empty() 仅对以下值返回 true:""、0、0.0、null、false、[](空数组)。值得注意的是:0.00 和 .0 作为浮点数本身仍会被 empty() 视为 true(因其等价于 0.0),但其字符串形式 "0.00" 或 ".0" 则不为空——这正是常见误区来源。
✅ 推荐做法:封装一个语义清晰、可配置的 isBlank() 函数,覆盖典型“伪空”场景:
function isBlank($var): bool
{
// 先用 empty() 覆盖基础空值
if (empty($var)) {
return true;
}
// 处理字符串:去除首尾空白后判断是否为空

if (is_string($var)) {
return trim($var) === '';
}
// 可选:扩展数值字符串判断(按需启用)
if (is_string($var) && preg_match('/^[-+]?\d*\.?\d+([eE][-+]?\d+)?$/', $var)) {
return (float)$var == 0.0;
}
return false;
}
// 使用示例
var_dump(isBlank('')); // true
var_dump(isBlank(' ')); // true (trim 后为空)
var_dump(isBlank("\t\n\r")); // true
var_dump(isBlank('0.00')); // true (启用数值解析时)
var_dump(isBlank('.0')); // true
var_dump(isBlank('hello')); // false
var_dump(isBlank(0)); // true (empty 已覆盖)⚠️ 注意事项:
立即学习“PHP免费学习笔记(深入)”;
总结:没有放之四海而皆准的“空”定义,关键是以 empty() 为基石,按需叠加 trim()、正则、白名单等策略,并将业务规则显式外化——既保持代码可读性,又为未来扩展留出接口。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...