Is == in PHP a case-sensitive string comparison?

I was unable to find this on php.net. Is the double equal sign (==) case sensitive when used to compare strings in PHP?

86
задан Michael Mrozek 17 August 2010 в 20:38
поделиться

5 ответов

Да, == чувствителен к регистру.

Вы можете использовать strcasecmp для сравнения без учета регистра

100
ответ дан 24 November 2019 в 08:03
поделиться

Да, но сравнение выполняется побайтно.

Если вы сравниваете строки Unicode, вы можете сначала нормализовать их. См. Класс Нормализатор .

Пример (вывод в 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
19
ответ дан 24 November 2019 в 08:03
поделиться

== чувствителен к регистру, некоторые другие операнды из руководства php для ознакомления с

http: //www.php.net/manual/en/language.operators.comparison.php

2
ответ дан 24 November 2019 в 08:03
поделиться

Да, == чувствителен к регистру.

Между прочим, для сравнения без учета регистра используйте strcasecmp :

<?php
    $var1 = "Hello";
    $var2 = "hello";
    echo (strcasecmp($var1, $var2) == 0); // TRUE;
?>
11
ответ дан 24 November 2019 в 08:03
поделиться

== чувствителен к регистру, да.

Для нечувствительного сравнения строк можно использовать либо strtolower($x) == strtolower($y), либо strcasecmp($x, $y) == 0

8
ответ дан 24 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: