开发者

Ignore case sensitivity when comparing strings in PHP

开发者 https://www.devze.com 2022-12-10 01:25 出处:网络
I\'m trying to compare words for equality, and the case [upper and lower] is irrelevant. However PHP does not seem to agree! Any ideas as to how to force PHP to ignore the case of words while comparin

I'm trying to compare words for equality, and the case [upper and lower] is irrelevant. However PHP does not seem to agree! Any ideas as to how to force PHP to ignore the case of words while comparing them?

$arr_query_words = ["hat","Cat","sAt","maT"];
for( $j= 0; $j < count($arr_query_words); $j++ ){
    $story_body = str_replace( 
        $arr_query_words[ $j 开发者_运维问答],
        '<span style=" background-color:yellow; ">' . $arr_query_words[ $j ] . '</span>',
        $story_body
   );
}

Is there a way to carry out the replace even if the case is different?


Use str_ireplace to perform a case-insensitive string replacement (str_ireplace is available from PHP 5):

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

To case-insensitively compare strings, use strcasecmp:

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


The easiest, and most widely supported way to achieve this is possibly to lowercase both strings before comparing them, like so:

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

You might want to trim the strings being compared, simply use something like this to achieve this functionality:

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


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

strtolower converts string to lowercase


if(!strcasecmp($str1, $str2)) ... //they are equals ignoring case

strcasecmp returns 0 only if strings are equals ignoring case, so !strcasecmp return true if they are equals ignoring case, false otherwise

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

0

精彩评论

暂无评论...
验证码 换一张
取 消