php比較字符串的函數(shù):1、strcasecmp(),大小寫不敏感的比較兩個(gè)字符串;2、strcmp(),大小寫敏感的比較兩個(gè)字符串;3、strcoll(),根據(jù)本地設(shè)置來比較兩個(gè)字符串;4、strnatcasecmp(),大小寫不敏感的使用一種“自然排序”算法來比較兩個(gè)字符串;5、strnatcmp(),大小寫敏感的使用一種“自然排序”算法來比較兩個(gè)字符串。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8.1版、DELL G3電腦
php內(nèi)置了多種字符串比較函數(shù)
函數(shù) | 描述 |
---|---|
strcasecmp() | 比較兩個(gè)字符串(大小寫不敏感)。 |
strcmp() | 比較兩個(gè)字符串(大小寫敏感)。 |
strcoll() | 比較兩個(gè)字符串(根據(jù)本地設(shè)置)。 |
strnatcasecmp() | 使用一種"自然排序"算法來比較兩個(gè)字符串(大小寫不敏感)。 |
strnatcmp() | 使用一種"自然排序"算法來比較兩個(gè)字符串(大小寫敏感)。 |
strncasecmp() | 前 n 個(gè)字符的字符串比較(大小寫不敏感)。 |
strncmp() | 前 n 個(gè)字符的字符串比較(大小寫敏感)。 |
substr_compare() | 從指定的開始位置(二進(jìn)制安全和選擇性區(qū)分大小寫)比較兩個(gè)字符串。 |
常用字符串比較函數(shù)
1、strcmp()函數(shù)–以區(qū)分大小寫的方式比較兩個(gè)字符串
strcmp(string1,string2)
比較兩個(gè)字符串時(shí),如果:
-
如果兩個(gè)字符串相等,則會(huì)返回
0
; -
如果string1 小于 string2,則會(huì)返回
< 0
的值; -
如果string1 大于 string2,則會(huì)返回
> 0
的值;
我們先來看下面一個(gè)例子:
<?php $str1="12"; $str2="12"; echo strcmp($str1,$str2)."<br>"; $str1="12"; $str2="13"; echo strcmp($str1,$str2)."<br>"; $str1="15"; $str2="13"; echo strcmp($str1,$str2)."<br>"; ?>
輸出:
strcmp()函數(shù)在比較字符串時(shí),是區(qū)分大小寫的。
<?php $str1="PHP中文網(wǎng)"; $str2="php中文網(wǎng)"; echo strcmp($str1,$str2)."<br>"; ?>
輸出結(jié)果:
-1
借助這個(gè)特性,我們可以將其運(yùn)用在網(wǎng)站注冊賬號(hào)時(shí)的確認(rèn)用戶密碼功能中(密碼通常是區(qū)分大小寫的),比較兩次輸入的密碼是否一致。
<?php header("Content-type:text/html;charset=utf-8"); $pwd1 = 'php124@qq'; $pwd2 = 'php124@QQ'; if(strcmp($pwd1, $pwd2) != 0){ echo '密碼不匹配!'; } else { echo '密碼匹配!'; } ?>
只有兩個(gè)字符串完全匹配,strcmp()函數(shù)才會(huì)認(rèn)為相等的;而在上面示例中,$pwd1 和 $pwd2的大小寫不同,因此兩個(gè)字符串不相等。
但有時(shí),我們只需要比較字符串的值,不想?yún)^(qū)分大小寫,例如比較網(wǎng)站的網(wǎng)址,那要怎么處理?簡單,可以使用strcasecmp()函數(shù)。
2、strcasecmp()函數(shù)–以不區(qū)分大小寫的方式比較兩個(gè)字符串
strcasecmp()函數(shù)和strcmp()函數(shù)類似,都可比較字符串,返回值也相同,區(qū)別只是strcasecmp()函數(shù)不區(qū)分大小寫。
下面我們來看看下面一個(gè)例子:
<?php header("Content-type:text/html;charset=utf-8"); $url1="https://www.php.cn/"; $url2="HTTPS://WWW.PHP.CN/"; if(strcasecmp($url1, $url2) == 0){ echo '兩個(gè)網(wǎng)址相同'; } else { echo '兩個(gè)網(wǎng)址不同'; } ?>
輸出結(jié)果:
兩個(gè)網(wǎng)址相同
3、strncasecmp()函數(shù)–大小寫不敏感
strncasecmp() 函數(shù)比較兩個(gè)字符串(不區(qū)分大小寫)。語法如下
strncasecmp(string1,string2,length)
參數(shù) | 描述 |
---|---|
string1 | 必需。規(guī)定要比較的第一個(gè)字符串。 |
string2 | 必需。規(guī)定要比較的第二個(gè)字符串。 |
length | 必需。規(guī)定每個(gè)字符串用于比較的字符數(shù)。 |
返回值:
-
0 – 如果兩個(gè)字符串相等
-
<0 – 如果 string1 小于 string2
-
>0 – 如果 string1 大于 string2
示例:
<?php echo strncasecmp("Hello world!","hello earth!",6); ?>
輸出:
0
4、strnatcasecmp()函數(shù)–大小寫不敏感
strnatcasecmp() 函數(shù)使用一種"自然"算法來比較兩個(gè)字符串(不區(qū)分大小寫)。
在自然算法中,數(shù)字 2 小于數(shù)字 10。在計(jì)算機(jī)排序中,10 小于 2,這是因?yàn)?10 中的第一個(gè)數(shù)字小于 2。
語法:
strnatcasecmp(string1,string2)
返回值:
-
0 – 如果兩個(gè)字符串相等
-
<0 – 如果 string1 小于 string2
-
>0 – 如果 string1 大于 string2
示例:
<?php echo strnatcasecmp("2Hello world!","10Hello WORLD!"); echo "<br>"; echo strnatcasecmp("10Hello world!","2Hello WORLD!"); ?>
輸出:
-1 1
5、strncmp()函數(shù)–大小寫敏感
strncmp() 函數(shù)比較兩個(gè)字符串(區(qū)分大小寫)。
該函數(shù)與 strcmp() 函數(shù)類似,不同的是,strcmp() 沒有 length 參數(shù)(不能指定每個(gè)字符串用于比較的字符數(shù))。
strncmp(string1,string2,length)
參數(shù) | 描述 |
---|---|
string1 | 必需。規(guī)定要比較的第一個(gè)字符串。 |
string2 | 必需。規(guī)定要比較的第二個(gè)字符串。 |
length | 必需。規(guī)定每個(gè)字符串用于比較的字符數(shù)。 |
返回值和strcmp() 函數(shù)一樣
<?php header("Content-type:text/html;charset=utf-8"); $pwd1 = 'password'; $pwd2 = 'Password'; if(strncmp($pwd1, $pwd2,8) != 0){ echo '密碼不匹配!'; } else { echo '密碼匹配!'; } ?>
推薦學(xué)習(xí):《PHP視頻教程》
前端(VUE)入門到精通:立即學(xué)習(xí)