首頁 >後端開發 >php教程 >比較PHP中字串的方法

比較PHP中字串的方法

一个新手
一个新手原創
2018-05-14 14:34:542733瀏覽

以位元組比較

以位元組比較字串是最常用的方法。其中可能用到的函數為strcmp()和strcasecmp()。

這兩個函數的差異為strcmp()區分字元的大小寫,strcasecmp()不區分字元的大小寫,兩者用法基本上相同。

這裡只介紹strcmp();

語法如下

int strcmp(string str1,string str2)

參數str1和參數str2為要比較的兩個字串,如果相等則回傳0;如果參數str1大於str2則傳回值大於0;如果參數str1小於str2則回傳值小於0。

例如:

<span style="background-color:rgb(255,228,255); color:rgb(102,0,0)">$str1</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"107</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>网站工作室</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str2</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"107</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>网站工作</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255)"><em>strcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(228,228,255); color:rgb(102,0,0)">$str1</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str2</span><span style="background-color:rgb(247,250,255)">);<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"lab"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"LAB"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255)"><em>strcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">);<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255)"><em>strcasecmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">);</span>

運行結果如下:

310

以自然排序法比較

在PHP中,依照自然排序法進行字串比較是同過strnatcmp()函數來實現的。自然排序法比較的是字串中的數字部分,將字串中的數字依照大小經行排序。

語法如下:

int strnatcmp(string str1,string str2)

strnatcmp() 函數使用一種"自然"演算法來比較兩個字串。

在自然演算法中,數字 2 小於數字 10。在電腦排序中,10 小於 2,這是因為 10 中的第一個數字小於 2。

<span style="background-color:rgb(255,228,255); color:rgb(102,0,0)">$str1</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"str3.jpg"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str2</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"str10.jpg"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>按字节比较:</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">.</span><span style="background-color:rgb(247,250,255)"><em>strcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(228,228,255); color:rgb(102,0,0)">$str1</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str2</span><span style="background-color:rgb(247,250,255)">).</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"0c6dc11e160d3b678d68754cc175188a"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>按自然排序法比较:</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">.</span><span style="background-color:rgb(247,250,255)"><em>strnatcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(228,228,255); color:rgb(102,0,0)">$str1</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str2</span><span style="background-color:rgb(247,250,255)">).</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"0c6dc11e160d3b678d68754cc175188a"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"mrsoft1"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">=</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"MRSOFT2"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>按字节比较:</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">.</span><span style="background-color:rgb(247,250,255)"><em>strcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">).</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"0c6dc11e160d3b678d68754cc175188a"</strong></span><span style="background-color:rgb(247,250,255)">;<br></span><span style="background-color:rgb(247,250,255); color:rgb(0,0,128)"><strong>echo </strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0); font-family:宋体"><strong>按自然排序法比较:</strong></span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"</strong></span><span style="background-color:rgb(247,250,255)">.</span><span style="background-color:rgb(247,250,255)"><em>strnatcmp</em></span><span style="background-color:rgb(247,250,255)">(</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str3</span><span style="background-color:rgb(247,250,255)">,</span><span style="background-color:rgb(247,250,255); color:rgb(102,0,0)">$str4</span><span style="background-color:rgb(247,250,255)">).</span><span style="background-color:rgb(247,250,255); color:rgb(0,128,0)"><strong>"0c6dc11e160d3b678d68754cc175188a"</strong></span><span style="background-color:rgb(247,250,255)">;</span>

輸出結果為:

以位元組比較:1
依自然排序法比較:-1
依位元組比較:1
依自然排序法比較:1

$str1 = "mrsoft1";
$str2 = "MRSOFT2";
echo strnatcmp($str1,$str2); //1 因为 m 大于 M
$str1 = "mrsoft1";
$str2 = "mrsoft2";
echo strnatcmp($str1,$str2); //-1 这样才对
$str1 = "mrsoft11";
$str2 = "mrsoft2";
echo strnatcmp($str1,$str2); //1 这才是本意 11 大于 2

說明:依照自然排序進行比較時,還有一個作用與strnatcmp()函數相同,但不區分大小寫的strnatcasecmp()函數

<span style="font-size: 20px; color: rgb(255, 0, 0);">指定从源字符串的位置比较</span><br>
<pre style="font-family:Consolas; font-size:12pt; background-color:rgb(255,255,255)">strncmp()函数用来比较字符串中的前n个字符,该函数区分大小写
语法如下:
int strncmp(string str1,string str2,int len)
参数str1规定要比较的首个字符串。参数str2规定要比较的第二个字符串。len(必需)规定比较中所用的每个字符串的字符数。
<span style="font-family:微软雅黑; font-size:14px">如果相等则返回0;如果参数str1大于str2则返回值大于0;</span><span style="font-family:微软雅黑; font-size:14px">如果参数str1小于str2则返回值小于0。</span><br>
例如:
运算结果为
-1

提示:此函數與 strcmp() 函數類似,不同的是,strcmp() 沒有 length 參數

以上是比較PHP中字串的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn