strncasecmp

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

strncasecmp前 n 个字符的二进制安全不区分大小写的字符串比较

描述

strncasecmp(string $string1, string $string2, int $length): int

此函数类似于 strcasecmp(),区别在于您可以指定用于比较的每个字符串的字符数(上限)。

参数

string1

第一个字符串。

string2

第二个字符串。

length

用于比较的字符串长度。

返回值

如果 string1 小于 string2,则返回 -1;如果 string1 大于 string2,则返回 1;如果它们相等,则返回 0

变更日志

版本 描述
8.2.0 此函数现在返回 -11,而以前返回负数或正数。

示例

示例 #1 strncasecmp() 示例

<?php

$var1
= 'Hello John';
$var2 = 'hello Doe';
if (
strncasecmp($var1, $var2, 5) === 0) {
echo
'First 5 characters of $var1 and $var2 are equals in a case-insensitive string comparison';
}
?>

参见

  • strncmp() - 前 n 个字符的二进制安全字符串比较
  • preg_match() - 执行正则表达式匹配
  • substr_compare() - 从偏移量开始,最多比较 length 个字符的两个字符串的二进制安全比较
  • strcasecmp() - 二进制安全不区分大小写的字符串比较
  • stristr() - 不区分大小写的 strstr
  • substr() - 返回字符串的一部分

添加说明

用户贡献的说明 2 notes

-7
sazalach at gmail dot com
8 年前
<?php
$str1
= "red";
$str2 = "redent";
$test=strncasecmp($str1, $str2 , 3);
if (
$str1==$str2)
{
echo
"$test";
}
else
{
echo
"$test" ;
}
?>

如果我们运行上面的脚本,我们会得到返回值 0,因为第一个字符串 $str1 = "red" 和第二个 $str2 = "redent",但在比较中我设置了要尝试匹配的前三个字符。根据条件,如果两个字符串相等,它将返回 0。但在下面的示例中,它将返回大于 0 的值,因为这里 str1 大于 str2。

<?php
$str1
= "redmyshirt";
$str2 = "redent";
$test=strncasecmp($str1, $str2 , 4);
if (
$str1==$str2)
{
echo
"$test";
}
else
{
echo
"$test" ;
}
?>

同样,如果我们运行下面的脚本,它将返回 -1,因为 str1 小于 str2。

<?php
$str1
= "red";
$str2 = "redent";
$test=strncasecmp($str1, $str2 , 4);
if (
$str1==$str2)
{
echo
"$test";
}
else
{
echo
"$test" ;
}
?>

是的,我认为很容易理解。
-50
saikumar dot msc at gmail dot com
10 年前
示例
<?php
$string
= “true”;
if(
strncasecmp($string, “Trudeau”, 4)) { print “True”; } else { print "False" }
?>

如果我们看一下上面的示例,我们会立即说最终输出将是 'False',但事实并非如此。

方法 "strncasecmp()" 返回 1,因为 "Trud" 的前四个字符在不区分大小写的排序中位于 "true" 的前四个字符之前。
To Top