strncasecmp

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

strncasecmpバイナリセーフで大文字小文字を区別しない文字列比較を、最初の n 文字について行う

説明

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

この関数は、strcasecmp() に似ていますが、 各文字列から比較する文字数(の上限)(len) を指定できるという違いがあります。どちらかの文字列が lenより短い場合、その文字列の長さが比較時に使用されます。

パラメータ

string1

最初の文字列。

string2

次の文字列。

length

比較する文字列の長さ。

戻り値

string1string2 より短い場合に -1 を返し、string1string2 より大きい場合に 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() - 指定した位置から指定した長さの 2 つの文字列について、バイナリ対応で比較する
  • strcasecmp() - 大文字小文字を区別しないバイナリセーフな文字列比較を行う
  • stristr() - 大文字小文字を区別しない strstr
  • substr() - 文字列の一部分を返す

add a note add a note

User Contributed Notes 2 notes

up
-5
sazalach at gmail dot com
9 years ago
<?php
$str1
= "red";
$str2 = "redent";
$test=strncasecmp($str1, $str2 , 3);
if (
$str1==$str2)
{
echo
"$test";
}
else
{
echo
"$test" ;
}
?>

if we run the above script then we will get return 0, because first string $str1 = "red" and second $str2 = "redent" but in comparison i have set the first three character will try to match. as per condition if two string are equal then it will return 0. But in below example it will return greater than 0 because here is str1 is greater than str2.

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

as same if we run the below script it will return -1 because str1 is less than str2.

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

ya..i think its easy to understand
up
-47
saikumar dot msc at gmail dot com
10 years ago
Example:
<?php
$string
= “true”;
if(
strncasecmp($string, “Trudeau”, 4)) { print “True”; } else { print "False" }
?>

If we look at above example, immediately we will say the final output will be 'False', but that's not real.

Method "strncasecmp()" returns 1 because the first four characters of ‘Trud’ come before the first four characters of "true" when sorted not case sensitively.
To Top