関数の概要
PHPの strncasecmp 関数は、文字列の先頭から指定した長さまでを大文字小文字を区別せずに比較するための関数です。大小文字を無視して比較したい場合に便利で、比較対象が等しいか、それともどちらが辞書順で前かを判定できます。
パラメータの説明
string $str1— 比較する最初の文字列。string $str2— 比較する二番目の文字列。int $len— 比較する最大の文字数。この長さまでを大文字小文字を無視して比較します。
戻り値
比較結果は整数で返されます。
- 0: 指定した長さで比較したときに文字列が等しい。
- 0より小さい値:
$str1が$str2よりも辞書順で前にある。 - 0より大きい値:
$str1が$str2よりも辞書順で後にある。
使用例
基本的な使い方
<?php
$str1 = "ApplePie";
$str2 = "appleSauce";
$result = strncasecmp($str1, $str2, 5);
echo $result; // 結果は0。先頭5文字は大文字小文字を無視すると同じ
?>
この例では、先頭5文字「Apple」と「apple」が大文字小文字を無視すると同じため、結果は0になります。
文字列の長さを制限して比較
<?php
$str1 = "HelloWorld";
$str2 = "helloUniverse";
$result = strncasecmp($str1, $str2, 7);
if ($result === 0) {
echo "先頭7文字は一致しています。";
} else {
echo "先頭7文字は一致していません。";
}
?>
このコードは、先頭7文字を大文字小文字を区別せずに比較し、一致するかどうかを判定します。
辞書順の大小を判定する
<?php
$str1 = "banana";
$str2 = "bandana";
$result = strncasecmp($str1, $str2, 3);
if ($result < 0) {
echo "$str1 は $str2 より辞書順で前です。";
} elseif ($result > 0) {
echo "$str1 は $str2 より辞書順で後です。";
} else {
echo "先頭3文字は同じです。";
}
?>
先頭3文字を比較して、どちらが辞書順で先かを判定しています。「ban」と「ban」は同じで0が返るため、「先頭3文字は同じです。」と表示されます。
関連する関数
strcmp— 大文字小文字を区別して文字列を比較する。strcasecmp— 大文字小文字を区別せずに文字列全体を比較する。strncmp— 大文字小文字を区別して先頭n文字を比較する。
まとめ
strncasecmp は、文字列の先頭から指定した文字数だけ大文字小文字を無視して比較したい場合に便利なPHP関数です。検索やフィルタリング、ユーザ入力の判定など実務でよく用いられます。大小比較の結果も整数で返されるため、辞書順の判定などにも活用できます。大文字小文字を区別する strncmp と使い分けることで、より柔軟な文字列処理が可能です。
