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
IStream与TStream之间的相互转换
Aug 01 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
php全角字符转换为半角函数
Feb 07 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP常用处理静态操作类
Apr 03 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
促销活动策划方案
2014/01/12 职场文书
《观舞记》教学反思
2014/04/16 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技