Мені не вдалося знайти це на 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
}