电话
400 9058 355
php 的 `empty()` 函数对 `0`、`false`、`null`、空字符串等返回 `true`,但无法识别含空格、零值字符串(如 `"0.00"`、`".0"`)等业务意义上的“空”。本文提供可扩展的自定义空值检测方案,并给出健壮、可维护的实现示例。
在实际 Web 开发中(如表单验证、API 参数清洗),我们常需判断用户输入是否“真正为空”——这往往超出 PHP 内置 empty() 的语义范围。例如:
因此,推荐定义一个语义清晰、可配置的 isBlank() 函数,兼顾严谨性与实用性:
function isBlank($var, $trimWhitespace = true, $treatZeroStringsAsEmpty = false): bool
{
// 1. 先用 empty() 检查基础空值(null, false, 0, "", array() 等)
if (empty($var)) {
return true;
}
// 2. 若为字符串,进一步标准化处理
if (is_string($var)) {
$str = $var;
// 可选:先 trim 空白字符(含 \t, \n, \r, 全角空格等)
if ($trimWhitespace) {
$str = trim($str, " \t\n\r\0\x0B\u{3000}");
}
// 若 trim 后为空,则判定为空
if ($str === '') {
return true;
}
// 可选:将常见“零值字符串”视为空(按业务需求启用)
if ($treatZeroStringsAsEmpty) {
// 使用 floatval + strval 避免科学计数法误判,同时兼容 ".0", "0.00", "0"
$normalized = strval(floatval($str));
if ($normalized === '0') {
return true;
}
}
}
return false;
}
// ✅ 使用示例:
var_dump(isBlank('')); // true
var_dump(isBlank(' ')); // true(默认 t
rim)
var_dump(isBlank("\t\n\r")); // true
var_dump(isBlank('0.00')); // false(默认不处理零字符串)
var_dump(isBlank('0.00', true, true)); // true(启用零字符串模式)
var_dump(isBlank(0.00)); // true(empty 已覆盖)
var_dump(isBlank('hello')); // false关键注意事项:
归根结底,“空”的定义取决于你的业务场景。empty() 是语言层基础工具,而 isBlank() 是面向领域的语义增强——明确意图、控制边界、避免隐式陷阱,才是健壮验证的核心。
邮箱: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...