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

86 php string-comparison

我无法在php.net上找到这个.==用于比较PHP中的字符串时,双等号()是否区分大小写?

Col*_*ard 100

是的,==区分大小写.

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

  • 有用的问题和有用的答案..谢谢;) (4认同)

Art*_*cto 19

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

如果您要比较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
Run Code Online (Sandbox Code Playgroud)

  • +1的洞察力,它不是真正的字符串比较(它是二进制比较).因此,它在技术上不区分大小写(虽然在99.999%的情况下它的行为就像它一样)...... (3认同)

Ste*_*hen 11

是的,==区分大小写.

顺便提一下,对于非区分大小写的比较,请使用strcasecmp:

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


Frx*_*rem 8

== 区分大小写,是的.

要不敏感地比较字符串,您可以使用strtolower($x) == strtolower($y)strcasecmp($x, $y) == 0