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 :第二個字符串。
$length :比較的字符數。
strncmp函數從兩個字符串的開頭開始比較,最多比較length個字符。它返回以下幾種可能的值:
0 :表示前length個字符相等。
大於0 :表示$str1的前length個字符大於$str2的前length個字符。
小於0 :表示$str1的前length個字符小於$str2的前length個字符。
strncmp函數是區分大小寫的。這意味著,如果你用strncmp比較"hello"和"Hello" ,即使這兩個字符串除了首字母外完全相同,函數仍然會認為它們不相等。看以下例子:
<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">"兩個字符串相同"</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">"兩個字符串不同"</span></span><span>;
}
</span></span>
輸出結果將是:
<span><span>兩個字符串不同
</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函數在比較兩個字符串的前length個字符時會忽略大小寫差異。示例如下:
<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">"兩個字符串相同"</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">"兩個字符串不同"</span></span><span>;
}
</span></span>
輸出結果將是:
<span><span>兩個字符串相同
</span></span>
如上所示, strncasecmp函數忽略了"hello"和"Hello"中的大小寫差異,認為它們相同。
strncmp函數在比較字符串時是區分大小寫的。
如果需要進行不區分大小寫的比較,可以使用strncasecmp函數。
在實際開發中,我們需要根據具體需求選擇使用strncmp或者strncasecmp ,以確保字符串比較的結果符合預期。在處理用戶輸入、表單數據或者數據庫查詢結果時,理解這些函數的差異尤為重要。