¿Es == en PHP una comparación de cadenas que distingue entre mayúsculas y minúsculas?

88

No pude encontrar esto en php.net. ¿El doble signo igual ( ==) distingue entre mayúsculas y minúsculas cuando se usa para comparar cadenas en PHP?

Michael Mrozek
fuente

Respuestas:

104

Sí, ==distingue entre mayúsculas y minúsculas.

Puede utilizar strcasecmppara la comparación que no distingue entre mayúsculas y minúsculas

Colin Pickard
fuente
20

Sí, pero hace una comparación byte a byte.

Si está comparando cadenas Unicode, es posible que desee normalizarlas primero. Ver la Normalizerclase.

Ejemplo (salida en 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
Artefacto
fuente
3
+1 para tener una idea de que no es realmente una comparación de cadenas (es una comparación binaria). Por lo tanto, técnicamente no
distingue entre
11

Sí, ==distingue entre mayúsculas y minúsculas.

Por cierto, para una comparación no sensible a mayúsculas y minúsculas, use strcasecmp:

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

== distingue entre mayúsculas y minúsculas, sí.

Para comparar cadenas de forma insensible, puede usar strtolower($x) == strtolower($y)ostrcasecmp($x, $y) == 0

Frxstrem
fuente
1

Sí, ==distingue entre mayúsculas y minúsculas. La forma más fácil para mí es convertir a mayúsculas y luego comparar. En la instancia:

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

¡Espero que funcione!

Salvi Pascual
fuente
0

En su lugar, podría intentar comparar con una función hash

  if( md5('string1') == md5('string2') ) {
    // strings are equal
  }else {
    // strings are not equal
  }
Sitio Antipas
fuente