Мне не удалось найти это на php.net. Является ли двойной знак равенства ( ==
) чувствительным к регистру при использовании для сравнения строк в PHP?
Мне не удалось найти это на php.net. Является ли двойной знак равенства ( ==
) чувствительным к регистру при использовании для сравнения строк в PHP?
Ответы:
Да, с ==
учетом регистра.
Вы можете использовать strcasecmp
для сравнения без учета регистра
Да, но сравнение выполняется побайтно.
Если вы сравниваете строки 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
Да, с ==
учетом регистра.
Кстати, для сравнения без учета регистра используйте strcasecmp
:
<?php
$var1 = "Hello";
$var2 = "hello";
echo (strcasecmp($var1, $var2) == 0); // TRUE;
?>
==
учитывает регистр, да.
Для нечувствительного сравнения строк можно использовать либо, strtolower($x) == strtolower($y)
либоstrcasecmp($x, $y) == 0
==
чувствителен к регистру, некоторые другие операнды из руководства по php, чтобы ознакомиться с
http://www.php.net/manual/en/language.operators.comparison.php
Да, с ==
учетом регистра. Самый простой способ для меня - преобразовать в верхний регистр, а затем сравнить. Например:
$var = "Hello";
if(strtoupper($var) == "HELLO") {
echo "identical";
}
else {
echo "non identical";
}
Надеюсь это работает!
Вместо этого вы можете попробовать сравнить с хеш-функцией
if( md5('string1') == md5('string2') ) {
// strings are equal
}else {
// strings are not equal
}