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

 更新时间:2006年11月26日 00:00:00   作者:  
最近在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 pdo oracle中文乱码的快速解决方法

    php pdo oracle中文乱码的快速解决方法

    下面小编就为大家带来一篇php pdo oracle中文乱码的快速解决方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-05-05
  • 浅谈如何提高PHP代码的质量

    浅谈如何提高PHP代码的质量

    说实话,在代码质量方面,PHP 的压力非常大。通过阅读本系列文章,您将了解如何提高 PHP 代码的质量。
    2021-05-05
  • PHP $_SERVER详解

    PHP $_SERVER详解

    php编程中经常需要用到一些服务器的一些资料,我把常用的用高亮的方式贴出来,其余的放在后面.方便以后查阅
    2009-01-01
  • php+js iframe实现上传头像界面无跳转

    php+js iframe实现上传头像界面无跳转

    这篇文章主要介绍了php+js实现的上传头像界面无跳转,示例中用到了iframe,需要的朋友可以参考下
    2014-04-04
  • 分享3个php获取日历的函数

    分享3个php获取日历的函数

    本文给大家汇总了3个php获取日历的函数,分别是php获取指定日期的月份的日历、获取指定日期所在月的开始日期与结束日期、获取当前星期的日期范围,都是比较常用的方法,有需要的小伙伴可以参考下。
    2015-09-09
  • PHP实现可自定义样式的分页类

    PHP实现可自定义样式的分页类

    这篇文章主要介绍了PHP实现可自定义样式的分页类,可以自定义分页样式,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • PHP计算字符串真正的宽度和高度像素(图片加文字水印示例)

    PHP计算字符串真正的宽度和高度像素(图片加文字水印示例)

    这篇文章通过给图片加文字水印示例来解释PHP计算字符串真正的宽度和高度像素的方法。计算字符串用strlen()只能得到字符串长度,不是宽高像素,而根据字体的大小和所用字体计算出的才是字符串真正的宽高像素。
    2023-02-02
  • PHP微信支付结果通知与回调策略分析

    PHP微信支付结果通知与回调策略分析

    这篇文章主要介绍了PHP微信支付结果通知与回调策略,结合实例形式分析了php微信支付结果的回调处理相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • php简单防盗链验证实现方法

    php简单防盗链验证实现方法

    这篇文章主要介绍了php简单防盗链验证实现方法,通过$_SERVER['HTTP_REFERER']获取来路页面URL再进行判断进而实现对非本地URL的拦截功能,需要的朋友可以参考下
    2016-07-07
  • php中防止伪造跨站请求的小招式

    php中防止伪造跨站请求的小招式

    伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。
    2011-09-09

最新评论