用PHP中的 == 运算符进行字符串比较


Posted in PHP onNovember 26, 2006

最近在Greg Beaver's的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。

在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:

<?php
var_dump
('01' == 1);
?>

以上代码输出结果为:
bool(true)

所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。

除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:

<?php
var_dump
(in_array('01', array('1')));
?>

以上代码输出结果为:
bool(true)

相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:

<?php
var_dump
(in_array('01', array('1'), true));
?>

输出结果为:
bool(false)

由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。

PHP 相关文章推荐
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
PHP常用的缓存技术汇总
May 05 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
php实现字符串翻转的方法
Mar 27 PHP
php转换颜色为其反色的方法
Apr 27 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php自动载入类用法实例分析
Jun 24 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
PHP图片上传类带图片显示
Nov 25 #PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 #PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 #PHP
xajax写的留言本
Nov 25 #PHP
SSI指令
Nov 25 #PHP
配置支持SSI
Nov 25 #PHP
PHP生成静态页
Nov 25 #PHP
You might like
第六节--访问属性和方法
2006/11/16 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php中stream(流)的用法
2014/03/25 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
angular.element方法汇总
2015/01/07 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python定时执行指定函数的方法
2015/05/27 Python
python类装饰器用法实例
2015/06/04 Python
Python实现选择排序
2017/06/04 Python
python中 logging的使用详解
2017/10/25 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python字符串格式化输出代码实例
2019/11/22 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
MIS软件工程师的面试题
2016/04/22 面试题
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
财务出纳岗位职责
2014/02/03 职场文书
党员公开承诺书范文
2014/03/25 职场文书
森林防火宣传标语
2014/06/27 职场文书
项目申报专员岗位职责
2014/07/09 职场文书