54 votes

PHP Ignorer la sensibilité à la casse lors de la comparaison des chaînes?

Im essayant de comparer les mots pour l'égalité, et le cas [supérieur et inférieur] n'est pas pertinent. Cependant PHP ne semble pas d'accord!

Des idées sur la façon de forcer PHP à ignorer la casse des mots tout en les comparant ??

Toute aide appréciée!

 $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 ->
}
 

Existe-t-il un moyen d'effectuer le remplacement même si le boîtier est différent ???

Toutes mes excuses pour le flou de la question d'origine.

Donal

96voto

Dominic Rodger Points 44489

Utilisez str_ireplace pour effectuer un remplacement de chaîne insensible à la casse ( str_ireplace est disponible depuis PHP 5):

 $story_body = str_ireplace($arr_query_words[$j],
   '<span style=" background-color:yellow; ">'. $arr_query_words[$j]. '</span>',
    $story_body);
 

Pour comparer les chaînes sans tenir compte de la casse, utilisez strcasecmp :

 <?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
?>
 

30voto

Tim Visée Points 758

La façon la plus simple d'y parvenir est peut-être de mettre les deux chaînes en minuscules avant de les comparer, comme ceci:

 if(strtolower($var1) == strtolower($var2)) {
    // Equals, case ignored
}
 

Vous voudrez peut-être couper les chaînes comparées, utilisez simplement quelque chose comme ceci pour obtenir cette fonctionnalité:

 if(strtolower(trim($var1)) == strtolower(trim($var2))) {
    // Equals, case ignored and values trimmed
}
 

J'espère que cela t'aides!

5voto

$var1 = "THIS is A teST";
$var2 = "this is a tesT";
if (strtolower($var1) === strtolower($var2) ) {
    echo "var1 and var2 are same";
}

4voto

Mitja Points 105

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X