比较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转换为小写
我总是把大写和小写之间的ASCII码加到小写字母上。