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设计模式 Observer(观察者模式)
Jun 26 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
Aug 06 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
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
关于PHP开发的9条建议
2015/07/27 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
jquery 手势密码插件
2017/03/17 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
详解vue v-model
2020/08/31 Javascript
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
公益广告宣传方案
2014/02/28 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
语文复习计划
2015/01/19 职场文书
2015年班干部工作总结
2015/04/29 职场文书
创业计划书之花店
2019/09/20 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android