2010-08-17 32 views

Trả lời

93

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

Bạn có thể sử dụng strcasecmp đối với trường hợp không nhạy cảm so

+4

câu hỏi hữu ích và câu trả lời hữu ích..thanks;) –

11

Vâng, == là trường hợp nhạy cảm.

Ngẫu nhiên, đối với một trường hợp không so sánh nhạy cảm, sử dụng strcasecmp:

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

(Không thể giúp bản thân mình^_ ^.) – Stephen

18

Vâng, nhưng nó có một so sánh byte-by-byte.

Nếu bạn so sánh chuỗi unicode, trước tiên bạn có thể muốn bình thường hóa chúng. Xem lớp Normalizer.

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 cho thông tin chi tiết rằng nó không thực sự so sánh chuỗi (so sánh nhị phân). Do đó nó về mặt kỹ thuật không phân biệt chữ hoa chữ thường (mặc dù trong 99.999% các trường hợp nó hoạt động giống như nó) ... – ircmaxell

8

== là trường hợp nhạy cảm , Vâng.

Để so sánh chuỗi insensitively, bạn có thể sử dụng một trong hai strtolower($x) == strtolower($y) hoặc strcasecmp($x, $y) == 0

0

Vâng, == là trường hợp nhạy cảm. Cách dễ 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!

Các vấn đề liên quan