比较PHP中的string时忽略区分大小写

我试图比较文字是否平等,而上下文无关。 不过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执行不区分大小写的stringreplace( 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区分大小写比较string,请使用strcasecmp

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

实现这个最简单,最广泛支持的方法是在比较它们之前将两个string小写,如下所示:

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

你可能想要修剪被比较的string,只需要使用类似的东西来实现这个function:

 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将string转换为小写

 !strcasecmp($str1, $str2) 

只有当string等于忽略大小写时,它才返回0

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

我总是把大写和小写之间的ASCII码加到小写字母上。