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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
JS异常处理try..catch语句的作用和实例
May 05 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
php注册审核重点解析(数据访问)
May 23 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
我的群发邮件程序
2006/10/09 PHP
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
JavaScript类的写法
2016/09/17 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Python最长公共子串算法实例
2015/03/07 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
python实现简单颜色识别程序
2020/02/19 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
建筑工程专业毕业生自荐信
2013/10/19 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
外语学院毕业生的自我鉴定
2013/11/28 职场文书
高效课堂标语
2014/06/26 职场文书
学校志愿者活动总结
2014/06/27 职场文书
护士先进个人总结
2015/02/13 职场文书
致运动员的广播稿
2015/08/19 职场文书