在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把 类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:
var_dump ( '01' == 1 );
?>
以上代码输出结果为:
bool(true)
所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。
除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:
var_dump ( in_array ( '01' , array( '1' )));
?>
以上代码输出结果为:
bool(true)
相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好 in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开 in_array()函数的强制类型检查机制,如下代码所示:
var_dump ( in_array ( '01' , array( '1' ), true ));
?>
输出结果为:
bool(false)
由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被 弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。
以上就介绍了User-Agent字符串 用PHP中的 == 运算符进行字符串比较,包括了User-Agent字符串方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
查看更多关于User-Agent字符串用PHP中的==运算符进行字符串比较的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did61930