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 4.2书写安全的脚本
Oct 09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php内嵌函数用法实例
Mar 20 PHP
php简单图像创建入门实例
Jun 10 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
php实现解析xml并生成sql语句的方法
Feb 03 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
php unlink()函数使用教程
2018/07/12 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
小程序日历控件使用方法详解
2018/12/29 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python实现的简单模板引擎功能示例
2017/09/02 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
解读! Python在人工智能中的作用
2017/11/14 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
学校节能减排倡议书
2014/05/16 职场文书
医药销售自荐书
2014/05/29 职场文书
喋血孤城观后感
2015/06/08 职场文书
寻找成龙观后感
2015/06/12 职场文书
小学生反邪教心得体会
2016/01/15 职场文书