strncmp関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
$ str1 :最初の文字列。
$ str2 :2番目の文字列。
$の長さ:比較する文字の数。
strncmp関数は2つの文字列の先頭から始まり、ほとんどの長さの文字が比較されます。次の可能な値を返します。
0 :最初の長さの文字が等しいことを意味します。
0を超える: $ str1の最初の長さの文字が$ str2の最初の長さの文字よりも大きいことを意味します。
0未満: $ STR1の最初の長さの文字は、$ STR2の最初の長さの文字よりも少ないことを意味します。
strncmp関数は症例に敏感です。つまり、 「Hello」と「Hello」をStrncmpと比較すると、2つの文字列がイニシャルを除いてまったく同じであっても、機能は等しくないと考えられます。次の例を参照してください。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"2つの文字列は同じです"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"2つの文字列は異なります"</span></span><span>;
}
</span></span>
出力は次のとおりです。
<span><span>2つの文字列は異なります
</span></span>
「Hello」と「Hello」にはコンテンツの違いのみがありますが、 STRNCMPはデフォルトではケースに敏感であるため、それらを不平等と見なします。
STRNCMPを比較時に症例感受性にしたい場合は、 STRNCASECMP関数を使用できます。 strncasecmpはケースに依存しないバージョンであり、その使用はstrncmpに似ています。
<span><span><span class="hljs-title function_ invoke__">strncasecmp</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
STRNCASECMP関数は、2つの文字列の最初の長さの文字を比較すると、ケースの違いを無視します。例は次のとおりです。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncasecmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"2つの文字列は同じです"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"2つの文字列は異なります"</span></span><span>;
}
</span></span>
出力は次のとおりです。
<span><span>2つの文字列は同じです
</span></span>
上記のように、 Strncasecmp関数は「Hello」と「Hello」のケースの違いを無視し、それらを同じと見なします。
strncmp関数は、文字列を比較する場合、症例に敏感です。
ケース非感受性比較を行う必要がある場合は、 STRNCASECMP関数を使用できます。
実際の開発では、文字列の比較の結果が期待に沿っていることを確認するために、特定のニーズに応じてSTRNCMPまたはSTRNCASECMPを使用することを選択する必要があります。ユーザー入力、フォームデータ、またはデータベースクエリの結果を処理する際に、これらの機能の違いを理解することが特に重要です。