Apakah == di PHP merupakan perbandingan string peka huruf besar kecil?


88

Saya tidak dapat menemukan ini di php.net. Apakah ==peka huruf besar / kecil tanda sama dengan ganda ( ) saat digunakan untuk membandingkan string di PHP?

Jawaban:



20

Ya, tapi itu melakukan perbandingan byte-by-byte.

Jika Anda membandingkan string unicode, Anda mungkin ingin menormalkannya terlebih dahulu. Lihat Normalizerkelasnya.

Contoh (keluaran dalam 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

3
1 untuk wawasan bahwa ini bukan benar-benar perbandingan string (ini perbandingan biner). Oleh karena itu secara teknis tidak peka huruf besar / kecil (Meskipun dalam 99,999% kasus berperilaku seperti itu) ...
ircmaxell

11

Ya, ==peka huruf besar / kecil.

Secara kebetulan, untuk perbandingan non case sensitive, gunakan strcasecmp:

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

9

== peka huruf besar / kecil, ya.

Untuk membandingkan string secara tidak sensitif, Anda dapat menggunakan salah satu strtolower($x) == strtolower($y)ataustrcasecmp($x, $y) == 0



1

Ya, ==peka huruf besar / kecil. Cara termudah bagi saya adalah mengonversi ke huruf besar lalu membandingkan. Misalnya:

$var = "Hello";
if(strtoupper($var) == "HELLO") {
    echo "identical";
}
else {
    echo "non identical";
}

Saya harap ini berhasil!


0

Anda dapat mencoba membandingkan dengan fungsi hash

  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.