源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-07-01 12:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用PHP中的 == 运算符进行字符串比较
最近在Greg Beaver's的blog上发表的一篇新文章 [url=http://greg.chiaraquartet.net/archives/105-comparing-strings-in-PHP-with-the-operator.html]comparing strings in PHP with the == operator[/url] 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。   在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论: [code] <?php var_dump('01' == 1); ?> [/code]以上代码输出结果为: bool(true)   所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的[url=http://cn.php.net/manual/zh/types.comparisons.php]《PHP 类型比较表》[/url]对此也有详细说明。   除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码: [code]<?php var_dump(in_array('01', array('1'))); ?> [/code] 以上代码输出结果为: bool(true)   相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示: [code]<?php var_dump(in_array('01', array('1'), true)); ?> [/code]输出结果为: bool(false)   由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部