用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 zend解密软件绿色版测试可用
Apr 14 PHP
一道关于php变量引用的面试题
Aug 08 PHP
解析thinkphp的左右值无限分类
Jun 20 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
yii上传文件或图片实例
Apr 01 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
[原创]php求圆周率的简单实现方法
May 30 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
在laravel中实现ORM模型使用第二个数据库设置
Oct 24 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
php xml 入门学习资料
2011/01/01 PHP
基于empty函数的判断详解
2013/06/17 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
Python实现购物车程序
2018/04/16 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
解决Python对齐文本字符串问题
2019/08/28 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python3排序的实例方法
2020/10/20 Python
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
安徽导游词
2015/02/12 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
七年级作文之环保作文
2019/10/17 职场文书
python 提取html文本的方法
2021/05/20 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python