当前位置:首页 > 娱乐 > php判断字符串是否为空

php判断字符串是否为空

2026-10-17 05:44:30 [知识] 来源:力不从心网

php判断字符串是断字否为空

直接说结论:在PHP里判断字符串是否为空,最坑的符串否地方在于empty()和isset()的行为跟直觉不太一样,而strlen()才是断字真正盯着“字符串长度”看的那个。

我见过不少新手写if ($str == ''),符串否这代码看着没毛病,断字但碰上"0"这个字符串就翻车了——PHP的符串否松散比较会把"0"和空字符串当成相等。你辛辛苦苦从表单里收了个用户输入的断字"0",结果被当成没填,符串否这bug藏得够深。断字

先捋一下几个常用工具的符串否差异:

$str = "0"; var_dump(empty($str)); // true,因为"0"被当作false var_dump($str == ''); // true,断字松散比较的符串否坑 var_dump(strlen($str) === 0); // false,这才是断字正确判断

那到底什么时候用哪个?我的习惯是分场景。

如果你要检查的符串否是“用户有没有提交这个字段”,那empty()其实挺好用——它把null、断字''、"0"、0、false、空数组全算作“没有”。表单里一个没填的输入框,提交过来就是空字符串,用empty()判断省心。但注意,如果用户合法地输入了"0"(比如年龄、数量),empty()会误判。这时候你得改成strlen($str) > 0或者$str !== ''。

再看一个真实案例。我之前处理过一段接口代码,对方传了个JSON字段nickname,有时候是null,有时候是空字符串,偶尔还会传个"null"字符串进来。用empty()判断,null和''都拦住了,但"null"这个四字符的字符串溜过去了。最后我统一用trim($str) === ''来过滤,因为trim还能处理掉全空格的情况——' '这种肉眼看着像空的,strlen会返回3,但trim之后就是真空了。

还有个细节容易忽略:isset()只管变量是否存在,不管值是什么。所以isset($str)在$str = ''时返回true,在$str = null时返回false。你要是拿isset()判断空,那等于白写。

另外,PHP 8.0以后多了个str_contains,但跟判断空没关系。真正跟空有关的新函数是mb_strlen——多字节字符下,比如中文,strlen('你好')返回6(UTF-8每个汉字3字节),但mb_strlen('你好')返回2。你要是拿strlen去判断用户输入的姓名是否为空,中文名照样能通过,但拿它判断“是否超过20个字符”,那就得用mb_strlen了。

最后给个我自己的判断清单:

  • 检查表单提交:empty($_POST['field']),但排除合法"0"的场景。
  • 检查字符串变量是否为真空字符串:strlen($str) === 0。
  • 检查是否为空或全空格:trim($str) === ''。
  • 检查变量是否存在且非null:isset($var),别跟空混着用。

写代码最怕的就是“看起来对”。$str == ''这种写法在90%的情况下能跑,但剩下的10%会在半夜把你叫醒。记住,判断字符串空,默认用strlen($str) === 0,需要忽略空格就加trim,只有明确要过滤"0"和false时才用empty()。就这么简单。

(责任编辑:休闲)

推荐文章
  • 非法网站举报

    非法网站举报 上个月,我同事老张的电脑弹出一个“系统安全警告”,红底白字,声称他的浏览器被劫持,需要立即拨打一个400电话。他差点就拨过去了,我瞥了一眼网址后缀——.top,域名注册时间不到一周。这种钓鱼页面,一天 ...[详细]
  • 免费轻量云服务器体验一月

    免费轻量云服务器体验一月 上周四下午,我在阿里云官网瞎逛,看到首页挂着“新用户免费体验轻量服务器一个月”的横幅。点进去,流程简单得让人意外——注册账号,实名认证,选配置,下单时价格自动变成0元。整个过程不到十分钟,一台2核4G ...[详细]
  • 漏洞乌云

    漏洞乌云 凌晨三点,我盯着屏幕上的漏洞报告,后背发凉。一个看似无害的图片上传接口,居然能让人拿到整台服务器的root权限。攻击路径绕了三个跳板,最后利用的是开发者在配置文件里留的一行注释——那行注释写的是“临时 ...[详细]
  • html特效粒子漩涡代码

    html特效粒子漩涡代码 粒子漩涡的核心逻辑就一句话:让每个粒子围绕一个中心点做螺旋运动。你不需要懂复杂的物理引擎,canvas的2D上下文加几十行JavaScript就够。我见过有人用three.js做3D版,但平面漩涡做 ...[详细]
  • 网络相关法律

    网络相关法律 2021年,杭州互联网法院审理了一起案子。一个主播在直播间里卖假货,销售额超过300万,最后被判了三年有期徒刑,罚款200万。这个判决当时在圈子里炸开了锅——很多人第一次意识到,网络不是法外之地这句话 ...[详细]
  • 唯品会网站的特色

    唯品会网站的特色 唯品会首页的搜索框上方常年挂着一行小字:“品牌特卖,每天10点上新”。这行字才是它的命门。别的电商平台拼命做宽,恨不得把全品类都塞进首页;唯品会偏偏做窄,窄到像一家只卖打折名牌的线下折扣店——但这家店 ...[详细]
  • 漂移甩奶7分钟完整版

    漂移甩奶7分钟完整版 凌晨两点,手机屏幕的蓝光映在我脸上。朋友发来一个视频链接,标题就叫《漂移甩奶7分钟完整版》。我愣了一下,以为又是那种标题党猎奇视频,点开前甚至做好了看到无聊内容的心理准备。 结果完全不是那么回事。视频 ...[详细]
  • 如何应对外媒炒作

    如何应对外媒炒作 2023年2月,某西方媒体把中国一座普通光伏电站的航拍图,配上"沙漠中的绿色幽灵"标题,暗示这是"生态破坏"。结果当地牧民在评论区贴出十年前同一地点的照片——那时还是寸草不生的戈壁。这种打脸来得快,但 ...[详细]
  • 端口漏洞

    端口漏洞 凌晨三点,某电商平台的数据库管理员被手机震醒。告警短信显示:3306端口正被高频扫描,每秒超过两百次连接尝试。他睡眼惺忪地打开堡垒机,发现攻击源来自十七个国家的IP段——典型的分布式爆破。运维手册上写 ...[详细]
  • 网站注册信息盗用

    网站注册信息盗用 张明是在凌晨两点发现不对劲的。他刚在某个电商平台下单了一台相机,手机短信就弹出一条验证码——但那条验证码不是他触发的。他下意识点进那个平台的个人中心,收货地址里多了一个陌生的名字和电话,地址指向某个城 ...[详细]
热点阅读