== trong PHP có phải là một so sánh chuỗi phân biệt chữ hoa chữ thường không?


88

Tôi không thể tìm thấy điều này trên php.net. Dấu bằng kép ( ==) có phân biệt chữ hoa chữ thường khi được sử dụng để so sánh các chuỗi trong PHP không?

Câu trả lời:


104

Có, ==có phân biệt chữ hoa chữ thường.

Bạn có thể sử dụng strcasecmpđể so sánh phân biệt chữ hoa chữ thường


20

Có, nhưng nó thực hiện so sánh từng byte.

Nếu bạn đang so sánh các chuỗi unicode, trước tiên bạn có thể muốn chuẩn hóa chúng. Xem Normalizerlớp học.

Ví dụ (đầu ra trong 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 để hiểu rõ rằng nó không thực sự là so sánh chuỗi (đó là so sánh nhị phân). Do đó nó là về mặt kỹ thuật không phân biệt dạng chữ (Mặc dù trong 99,999% các trường hợp nó hoạt động giống như nó) ...
ircmaxell

11

Có, ==có phân biệt chữ hoa chữ thường.

Ngẫu nhiên, đối với so sánh không phân biệt chữ hoa chữ thường, hãy sử dụng strcasecmp:

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

8

== có phân biệt chữ hoa chữ thường.

Để so sánh các chuỗi một cách thiếu nhạy cảm, bạn có thể sử dụng strtolower($x) == strtolower($y)hoặcstrcasecmp($x, $y) == 0



1

Có, ==có phân biệt chữ hoa chữ thường. Cách đơn giản nhất đối với tôi là chuyển đổi sang chữ hoa và sau đó so sánh. Ví dụ:

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

Tôi hy vọng nó hoạt động!


0

Thay vào đó, bạn có thể thử so sánh với một hàm băm

  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.