我正在尝试比较单词的相等性,案例[upper和lower]是无关紧要的。 然而,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 ->
}
即使案件不同,有没有办法进行更换?
答案 0 :(得分:75)
使用str_ireplace
执行不区分大小写的字符串替换(PHP {5}提供str_ireplace
):
$story_body = str_ireplace($arr_query_words[$j],
'<span style=" background-color:yellow; ">'. $arr_query_words[$j]. '</span>',
$story_body);
要对字符串进行不区分大小写的比较,请使用strcasecmp
:
<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
?>
答案 1 :(得分:19)
实现这一目标的最简单,最广泛支持的方法可能是在比较它们之前将两个字符串小写,如下所示:
if(strtolower($var1) == strtolower($var2)) {
// Equals, case ignored
}
你可能想要修剪被比较的字符串,只需使用类似的东西来实现这个功能:
if(strtolower(trim($var1)) == strtolower(trim($var2))) {
// Equals, case ignored and values trimmed
}
希望这有帮助!
答案 2 :(得分:5)
答案 3 :(得分:4)
$var1 = "THIS is A teST";
$var2 = "this is a tesT";
if (strtolower($var1) === strtolower($var2) ) {
echo "var1 and var2 are same";
}
strtolower
将字符串转换为小写
答案 4 :(得分:1)
if(!strcasecmp($str1, $str2)) ... //they are equals ignoring case
strcasecmp仅在字符串等于忽略大小写时返回0,所以!strcasecmp如果等于忽略大小则返回true,否则返回false
答案 5 :(得分:-2)
我总是将大写和小写之间的ascii差异添加到小写字符。