在PHP中比较字符串时忽略区分大小写

时间:2009-10-30 16:22:47

标签: php

我正在尝试比较单词的相等性,案例[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 ->
}

即使案件不同,有没有办法进行更换?

6 个答案:

答案 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

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

答案 5 :(得分:-2)

我总是将大写和小写之间的ascii差异添加到小写字符。