== PHP'de büyük / küçük harfe duyarlı bir dize karşılaştırması mı?


88

Bunu php.net'te bulamadım. ==PHP'deki dizeleri karşılaştırmak için kullanıldığında çift ​​eşittir işareti ( ) büyük / küçük harfe duyarlı mıdır?

Yanıtlar:


104

Evet, ==büyük / küçük harfe duyarlıdır.

Büyük / strcasecmpküçük harfe duyarlı olmayan karşılaştırma için kullanabilirsiniz


20

Evet, ancak bayt bayt karşılaştırması yapıyor.

Unicode dizelerini karşılaştırıyorsanız, önce onları normalleştirmek isteyebilirsiniz. NormalizerSınıfa bakın .

Örnek (UTF-8'de çıktı):

$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, gerçekten dize karşılaştırması olmadığını anlamak için (ikili karşılaştırma). Bu nedenle teknik olarak büyük / küçük harfe duyarlı değildir (Vakaların%
99,999'unda

11

Evet, ==büyük / küçük harfe duyarlıdır.

Bu arada, büyük / küçük harfe duyarlı olmayan bir karşılaştırma için şunu kullanın strcasecmp:

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

9

== büyük / küçük harf duyarlıdır, evet.

Dizeleri duyarsız olarak karşılaştırmak için ya strtolower($x) == strtolower($y)da kullanabilirsinizstrcasecmp($x, $y) == 0



1

Evet, ==büyük / küçük harfe duyarlıdır. Benim için en kolay yol, büyük harfe çevirmek ve sonra karşılaştırmaktır. Örneğin:

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

Umarım işe yarar!


0

Bunun yerine bir hash işleviyle karşılaştırmayı deneyebilirsiniz

  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.