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 03 PHP
php zip文件解压类代码
Dec 02 PHP
php自动加载的两种实现方法
Jun 21 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
PHP中if和or运行效率对比
Dec 12 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
python实现目录树生成示例
2014/03/28 Python
Python使用turtule画五角星的方法
2015/07/09 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
pyqt5实现登录界面的模板
2020/05/30 Python
python找出因数与质因数的方法
2019/07/25 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
车间主管岗位职责
2013/11/14 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
护理专业自荐信范文
2014/02/26 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
优秀经理获奖感言
2014/03/04 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年财务部工作总结
2015/04/10 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server