validar - strncmp php
Ignorar la distinción entre mayúsculas y minúsculas al comparar cadenas en PHP (6)
Estoy tratando de comparar palabras para la igualdad, y el caso [superior e inferior] es irrelevante. Sin embargo, PHP no parece estar de acuerdo. ¿Alguna idea sobre cómo forzar a PHP a ignorar el caso de las palabras al compararlas?
$arr_query_words = array( "hat","Cat","sAt","maT" );
// for each element in $arr_query_words -
for( $j= 0; $j < count( $arr_query_words ); $j++ ){
// Split the $query_string on "_" or "%" :
$story_body = str_replace( $arr_query_words[ $j ],
''<span style=" background-color:yellow; ">'' . $arr_query_words[ $j ] . ''</span>'',
$story_body );
// --- This ONLY replaces where the case [upper or lower] is identical ->
}
¿Hay alguna manera de llevar a cabo el reemplazo incluso si el caso es diferente?
La manera más fácil y más ampliamente aceptada para lograr esto es posiblemente minúsculas de ambas cadenas antes de compararlas, de esta forma:
if(strtolower($var1) == strtolower($var2)) {
// Equals, case ignored
}
Es posible que desee recortar las cadenas que se comparan, simplemente use algo como esto para lograr esta funcionalidad:
if(strtolower(trim($var1)) == strtolower(trim($var2))) {
// Equals, case ignored and values trimmed
}
¡Espero que esto ayude!
Siempre agrego la diferencia ascii entre mayúsculas y minúsculas a los caracteres minúsculos.
Use str_ireplace
para realizar una sustitución de cadena insensible a mayúsculas y minúsculas ( str_ireplace
está disponible en PHP 5):
$story_body = str_ireplace($arr_query_words[$j],
''<span style=" background-color:yellow; ">''. $arr_query_words[$j]. ''</span>'',
$story_body);
Para comparar cadenas de manera insensible, use strcasecmp
:
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
echo ''$var1 is equal to $var2 in a case-insensitive string comparison'';
}
?>
$var1 = "THIS is A teST";
$var2 = "this is a tesT";
if (strtolower($var1) === strtolower($var2) ) {
echo "var1 and var2 are same";
}
strtolower
convierte cadena a minúscula
if(!strcasecmp($str1, $str2)) ... //they are equals ignoring case
strcasecmp devuelve 0 solo si las cadenas son iguales a ignorar mayúsculas y minúsculas, entonces! strcasecmp devuelve true si son iguales a ignorar mayúsculas y minúsculas, de lo contrario