天天看點

php字元串比較函數

比較兩個字元串是否相等,最常見的方法就是使用“===”來判斷,至于它和“==”的差別,簡單來說就是前者強調“identical”類型也要求一樣;後者要求“equal”,值相同就可以了,參考【1】。或者使用strcmp來判斷,但是這個能夠告訴你兩個字元串是否相等,但是無法告訴你在那裡不同。我的思路是單字元串分割為一個個字母(character),這樣比較就能精确知道在那個位置不同了。分隔字元串,使用“str_split”就可以了,文法參考【2】。然後輸出結果數組,好處是連空格也會作為數組的元素。我之前的例子就是因為前一個字元串包含2個空格,而後一個隻有一個。但是輸出的時候看到的顯示都是一樣的。 也可以按照其他分隔符進行分割,如“explode”或者“preg_split”,

  一般能用 !=, == 比較兩個對象是否相等,隻是以說是兩個對象,是因為他們不一定全部為字元串,也能為整型等等。比如

 代碼如下

複制代碼

$a = "joe"; 

$b = "jerry"; 

if ($a != $b) 

    echo "不相等"; 

else 

    echo "相等"; 

}

  如果用 !==,===(能看到多了一個等号)比較的話,兩個對象的類型要嚴格相等才能傳回true;否則用==,!=則會将字元串自動轉換成相應的類型,以便進行比較.

22 == "22"; // 傳回 true 

22 === "22"; // 傳回false

  正因為這樣,是以我們的程式時常會發生一些想不到的“意外”:

0 == "我愛你"; // 傳回true 

1 == "1 我愛你";// 傳回true

strcmp是用于區分大小寫(即大小寫敏感)的字元串比較:

echo strcmp("abcdd", "abcde"); // 傳回 1 (>0), 比較的是 "b"和"b"

strcasecmp用于不區分大小寫的字元串比較:

echo strcasecmp("abcdd", "abcde"); // 傳回 -1 (<0), 比較的是"d"和"e"

strncmp用于比較字元串的一部分,從字元串的開頭開始比較,第三個參數,為要比較的長度:

echo strncmp("abcdd", "abcde", 3); // 傳回 1 (>0), 比較了 abc 和 abc

strncasecmp用于不區分大小寫的比較字元串的一部分,從字元串的開頭開始比較,第三個參數,為要比較的長度:

echo strncasecmp("abcdd", "abcde", 3); // 傳回 0, 比較了 abc 和 abc, 由于不區分大小寫,是以兩者是相同的。

  更有一種情況是單單比較字元串大小,達不到我們預定的需求,比如照常理 10.gif 會比 5.gif 大,但如果應用上面幾個函數,就會傳回 -1,即表示 10.gif比5.gif,針對這種情況,php提供了兩個自然對比的函數strnatcmp,strnatcasecmp:

echo strnatcmp("10.gif", "5.gif"); // 傳回 1 (>0) 

echo strnatcasecmp("10.gif", "5.gif"); // 傳回 1 (>0)

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/