strcasecmp

(PHP 4, PHP 5)

strcasecmpBinary safe case-insensitive string comparison

Description

int strcasecmp ( string $str1 , string $str2 )

Binary safe case-insensitive string comparison.

Parameters

str1

The first string

str2

The second string

Return Values

Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.

Examples

Example #1 strcasecmp() example

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

See Also

  • strcmp() - Binary safe string comparison
  • preg_match() - Perform a regular expression match
  • substr_compare() - Binary safe comparison of two strings from an offset, up to length characters
  • strncasecmp() - Binary safe case-insensitive string comparison of the first n characters
  • stristr() - Case-insensitive strstr
  • substr() - Return part of a string

Коментарии

Автор:
The sample above is only true on some platforms that only use a simple 'C' locale, where individual bytes are considered as complete characters that are converted to lowercase before being differentiated.

Other locales (see LC_COLLATE and LC_ALL) use the difference of collation order of characters, where characters may be groups of bytes taken from the input strings, or simply return -1, 0, or 1 as the collation order is not simply defined by comparing individual characters but by more complex rules.

Don't base your code on a specific non null value returned by strcmp() or strcasecmp(): it is not portable. Just consider the sign of the result and be sure to use the correct locale!
2002-08-27 09:53:49
http://php5.kiev.ua/manual/ru/function.strcasecmp.html
Don't forget this is a single-byte function: in Unicode strings it'll provide incoherent results as soon as both strings differ only in case. There doesn't seem to exist a built-in multi-byte alternative so you need to write your own, taking into account both character encoding and collation.
2010-07-29 08:35:06
http://php5.kiev.ua/manual/ru/function.strcasecmp.html
A simple multibyte-safe case-insensitive string comparison:

<?php

function mb_strcasecmp($str1$str2$encoding null) {
    if (
null === $encoding) { $encoding mb_internal_encoding(); }
    return 
strcmp(mb_strtoupper($str1$encoding), mb_strtoupper($str2$encoding));
}

?>

Caveat: watch out for edge cases like "ß".
2011-12-28 18:59:18
http://php5.kiev.ua/manual/ru/function.strcasecmp.html
I didn't see any explanation in the documentation as to precisely how the positive/negative return values are calculated for unequal strings.

After a bit of experimentation it appears that it's the difference in alphabetical position of the first character in unequal strings.

For example, the letter 'z' is the 26th letter while the letter 'a' is the 1st letter:

<?php

      $zappl 
"zappl";
     
$apple "apple";

      echo 
strcasecmp($zappl$apple); #outputs 25 [26 - 1]
     
echo strcasecmp($apple$zappl); #outputs -25 [1 - 26]

?>

This might be incredibly obvious to most people, but hopefully it will clarify the calculation process for some others.
2018-10-13 23:47:34
http://php5.kiev.ua/manual/ru/function.strcasecmp.html

    Поддержать сайт на родительском проекте КГБ