PHP5.5和之前的版本empty函数的不同之处


Posted in PHP onJune 13, 2014

作为我最喜欢使用的函数之一,今天也终于发现这个函数的恶魔之处。洋洋洒洒写了以下代码,本地测试一切ok,到服务器上就SB了。

if(strlen($passwd) < 6 || empty($preg_replace("/\d/", "", $passwd))) {
    //do something
}

大致的意思就是,密码必须大于6位切不能只由数字组成。找遍服务器日志,发现如下错误:
PHP Fatal error: Can't use function return value in write context in /xxx/xxx/xx.php on line xxx

google了一下,大概是说,empty的参数不能为函数。我靠,本地明明是好的。看了下本地的PHP是5.5的,服务器是5.3的。难道这函数在2个版本之间就进化了么?找遍了PHP官方的文档没有发现任何端倪,然后google狂搜,不小心点到了PHP英文文档界面,在empty函数的介绍下面,发现了一行小字:

Note:
Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.

恶魔啊,不带这么坑中文用户的。总结下empty函数的使用场景:

1.PHP 5.5之前的版本,这个函数是用来检查变量的赋值是否为0, false, 空字符串, null。任何非变量形式的参数都是导致这个函数报错。
2.PHP 5.5这个函数可以应用于任何值,而不局限于变量。可以为常量、函数返回值等等。

PHP 相关文章推荐
PHP脚本的10个技巧(8)
Oct 09 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
php文件缓存方法总结
Mar 16 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 #PHP
PHP中多维数组的foreach遍历示例
Jun 13 #PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 #PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 #PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 #PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 #PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 #PHP
You might like
用PHP 4.2书写安全的脚本
2006/10/09 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
js单例模式的两种方案
2013/10/22 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
python 布尔操作实现代码
2013/03/23 Python
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
解决Python requests 报错方法集锦
2017/03/19 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python常用运维脚本实例小结
2020/02/14 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
sqlalchemy实现时间列自动更新教程
2020/09/02 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
档案管理员岗位职责
2015/02/12 职场文书
红色革命电影观后感
2015/06/18 职场文书
运动会加油稿30字
2015/07/21 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
python用字节处理文件实例讲解
2021/04/13 Python
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL