文字

strcasecmp

(PHP 4, PHP 5)

strcasecmp二进制安全比较字符串(不区分大小写)

说明

int strcasecmp ( string $str1 , string $str2 )

二进制安全比较字符串(不区分大小写)。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

范例

Example #1 strcasecmp() 范例

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

参见

  • strcmp() - 二进制安全字符串比较
  • preg_match() - 执行一个正则表达式匹配
  • substr_compare() - 二进制安全比较字符串(从偏移位置比较指定长度)
  • strncasecmp() - 二进制安全比较字符串开头的若干个字符(不区分大小写)
  • stristr() - strstr 函数的忽略大小写版本
  • substr() - 返回字符串的子串

用户评论:

[#1] chris at cmbuckley dot co dot uk [2011-12-28 16:59:18]

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 "?".

[#2] alvaro at demogracia dot com [2010-07-29 05:35:06]

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.

[#3] [2002-08-27 06:53:49]

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!

上一篇: 下一篇: