PHPでは、文字列の比較とマッチングは非常に一般的な操作です。このタイプの問題に対処するとき、私たちはしばしばファジーマッチングのケースを無視する必要があります。 PHPは、この要件を満たすために多くの文字列操作関数を提供します。その中で、 StrnatCaseCMP関数は非常に実用的なツールです。
strnatcasecmpは、2つの文字列を比較してケースを無視するPHPの組み込み関数です。比較すると、この関数は数値の自然なソートを考慮します。つまり、文字列に数値が含まれている場合、文字のASCIIコードだけでなく、数字の値に基づいて比較されます。これにより、 strnatcasecmpは、バージョン番号やその他のテキストなどの数字を含む文字列を処理するのに特に適しています。
int strnatcasecmp ( string $str1 , string $str2 )
$ str1 :比較する最初の文字列。
$ str2 :比較する2番目の文字列。
返品値:
2つの文字列が等しい場合は、 0を返します。
最初の文字列が2番目の文字列よりも小さい場合、負の数が返されます。
最初の文字列が2番目の文字列よりも大きい場合、正の数値が返されます。
ケースを無視するファジーストリングマッチングを実現するには、関数自体が自動的にケースを無視するため、比較のためにStrnatCaseCMP関数を使用するだけです。これが実用的なアプリケーションの例です。
<?php
// 2つの文字列を定義します
$string1 = "Version 1.10";
$string2 = "version 1.2";
// 使用 strnatcasecmp 関数は、小文字と小文字を無視するファジー比較を実行します
if (strnatcasecmp($string1, $string2) == 0) {
echo "2つの文字列は等しい。";
} else {
echo "2つの文字列は等しくありません。";
}
?>
出力結果:
2つの文字列は等しくありません。
strnatcasecmpは単なる無視ケースではなく、自然な順序でも比較されます。これは、文字列に数値が含まれている場合、PHPは文字のASCII順序ではなく、数値の実際の値によってソートされることを意味します。例えば:
<?php
// バージョン番号を比較します
$version1 = "Version 2.10";
$version2 = "Version 2.2";
// 使用 strnatcasecmp 比較します
if (strnatcasecmp($version1, $version2) == 0) {
echo "等しいバージョン。";
} else {
echo "バージョンは等しくありません。";
}
?>
出力結果:
バージョンは等しくありません。
この例では、 2.10は2.2を超えると見なされます。これは、数値をソートする直感的な方法と一致しています。
実際の開発では、特に異なるソースの文字列を比較する場合、文字列の一致をURLアドレスと組み合わせる必要がある場合があります。ここでは、 strnatcasecmpを使用して2つのURLを一致させることができます。これが例です:
<?php
// 二 URL 弦
$url1 = "https://gitbox.net/user/abc";
$url2 = "https://gitbox.net/user/ABC";
// 使用 strnatcasecmp 比較する URL
if (strnatcasecmp($url1, $url2) == 0) {
echo "这二 URL 等しい。";
} else {
echo "这二 URL 不等しい。";
}
?>
出力結果:
这二 URL 等しい。
STRNATCASECMP関数を使用することにより、PHP開発者は、高度と小文字を無視するファジー文字列比較を簡単に実装でき、比較時に数値の自然な並べ替えを自動的に考慮することができます。単純な文字列であろうと、バージョンの数字または数字を含む文字列であろうと、 strnatcasecmpは非常に実用的な機能です。 URL比較など、実際の開発のアプリケーションシナリオと組み合わせることで、よりスマートな文字列マッチング操作を簡単に実現できます。