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的图形函数中显示汉字
Oct 09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
php结合curl实现多线程抓取
Jul 09 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP使用函数用法详解
Sep 30 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 PHP
PHP7移除的扩展和SAPI
Mar 09 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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中的时间处理
2006/10/09 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
pygame播放音乐的方法
2015/05/19 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
python3.7.0的安装步骤
2018/08/27 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python 一维二维插值实例
2020/04/22 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
浅谈python数据类型及其操作
2021/05/25 Python
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android
Android Studio 计算器开发
2022/05/20 Java/Android