PHP中的"=="是区分大小写的字符串比较吗?

94

我在php.net上找不到这个信息。在PHP中,使用双等号(==)比较字符串时,它是否区分大小写?

7个回答

108

是的,== 区分大小写。

您可以使用 strcasecmp 进行不区分大小写的比较。


21

是的,但它会逐字节进行比较。

如果你正在比较 Unicode 字符串,你可能希望先对它们进行规范化。请参阅 Normalizer 类。

示例(输出为 UTF-8):

$s1 = mb_convert_encoding("\x00\xe9", "UTF-8", "UTF-16BE");
$s2 = mb_convert_encoding("\x00\x65\x03\x01", "UTF-8", "UTF-16BE");
//look the same:
echo $s1, "\n";
echo $s2, "\n";
var_dump($s1 == $s2); //false
var_dump(Normalizer::normalize($s1) == Normalizer::normalize($s2)); //true

4
对于指出这不是字符串比较而是二进制比较的见解给予赞同(+1)。因此,从技术上讲,它不区分大小写(尽管在99.999%的情况下,它表现得就像区分大小写一样)... - ircmaxell

12

是的,== 区分大小写。

顺便提一下,如果要进行不区分大小写的比较,请使用 strcasecmp 函数:

<?php
    $var1 = "Hello";
    $var2 = "hello";
    echo (strcasecmp($var1, $var2) == 0); // TRUE;
?>

9

== 是区分大小写的。

如果要不区分大小写比较字符串,可以使用 strtolower($x) == strtolower($y) 或者 strcasecmp($x, $y) == 0


2

1

是的,== 是区分大小写的。对于我来说,最简单的方法是将其转换为大写然后进行比较。例如:

$var = "Hello";
if(strtoupper($var) == "HELLO") {
    echo "identical";
}
else {
    echo "non identical";
}

我希望它能够工作!


1
你可以尝试使用哈希函数进行比较。
  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接