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 向访客和爬虫显示不同的内容
Nov 09 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
一个简单的PHP验证码实现代码
May 10 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
ThinkPHP路由机制简介
Mar 23 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
php实现获取近几日、月时间示例
Jul 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
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php写的AES加密解密类分享
2014/06/20 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
Python的subprocess模块总结
2014/11/07 Python
Python re模块介绍
2014/11/30 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python魔术方法详解
2015/02/14 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
单位作风建设自查报告
2014/10/23 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers
Golang实现可重入锁的示例代码
2022/05/25 Golang
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技