Nie mogłem znaleźć tego na php.net. Czy podwójny znak równości ( ==
) ma znaczenie przy porównywaniu ciągów znaków w PHP?
Nie mogłem znaleźć tego na php.net. Czy podwójny znak równości ( ==
) ma znaczenie przy porównywaniu ciągów znaków w PHP?
Odpowiedzi:
Tak, ==
rozróżnia się wielkość liter.
Możesz użyć strcasecmp
do porównania bez rozróżniania wielkości liter
Tak, ale porównuje bajt po bajcie.
Jeśli porównujesz ciągi znaków Unicode, możesz najpierw chcieć je znormalizować. Zobacz Normalizer
klasę.
Przykład (wyjście w 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
Tak, ==
rozróżnia się wielkość liter.
Nawiasem mówiąc, aby porównać bez rozróżniania wielkości liter, użyj strcasecmp
:
<?php
$var1 = "Hello";
$var2 = "hello";
echo (strcasecmp($var1, $var2) == 0); // TRUE;
?>
==
rozróżnia wielkość liter, tak.
Aby porównać ciągi bez wrażliwości, możesz użyć albo strtolower($x) == strtolower($y)
lubstrcasecmp($x, $y) == 0
==
rozróżnia wielkość liter, niektóre inne operandy z podręcznika php, aby się z nimi zapoznać
http://www.php.net/manual/en/language.operators.comparison.php
Tak, ==
rozróżnia się wielkość liter. Najłatwiejszym sposobem jest dla mnie konwersja na wielkie litery, a następnie porównanie. Na przykład:
$var = "Hello";
if(strtoupper($var) == "HELLO") {
echo "identical";
}
else {
echo "non identical";
}
Mam nadzieję, że to zadziała!
Zamiast tego możesz spróbować porównać z funkcją skrótu
if( md5('string1') == md5('string2') ) {
// strings are equal
}else {
// strings are not equal
}