Игнорировать чувствительность к регистру при сравнении строк в PHP

Я пытаюсь сравнить слова для равенства, и случай [верхний и нижний] не имеет значения. Однако PHP, похоже, не согласен! Любые идеи относительно того, как заставить PHP игнорировать случай слов при их сравнении?

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

Есть ли способ выполнить замену, даже если дело отличается?

Используйте str_ireplace для выполнения замены строки без str_ireplace регистра ( str_ireplace доступен с PHP 5):

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

Для strcasecmp сравнения строк используйте strcasecmp :

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

Самый простой и наиболее широко используемый способ достижения этой цели – это, возможно, сглаживание обеих строк перед их сравнением:

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

Возможно, вам захочется обрезать сравниваемые строки, просто используйте что-то подобное для достижения этой функциональности:

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

Надеюсь это поможет!

strcasecmp

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

strtolower преобразует строку в нижний регистр

 !strcasecmp($str1, $str2) 

strcasecmp возвращает 0, только если строки равны игнорируемому случаю, поэтому! strcasecmp возвращает true, если они равны игнорированию case, false в противном случае

http://php.net/manual/en/function.strcasecmp.php

Я всегда добавляю разницу ascii между верхним и нижним регистром в символы нижнего регистра.