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.
strcasecmp
(PHP 4, PHP 5)
strcasecmp — Binary 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
- preg_match() - Perform a regular expression match
- strcmp() - Binary safe string comparison
- substr() - Return part of a string
- stristr() - Case-insensitive strstr
- strncasecmp() - Binary safe case-insensitive string comparison of the first n characters
- strstr() - Find first occurrence of a string
strcasecmp
alvaro at demogracia dot com
29-Jul-2010 02:35
29-Jul-2010 02:35
27-Aug-2002 03:53
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!
