按字节比较
按字节比较字符串是最常用的方法。其中可能用到的函数为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>"<br>"</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>"<br>"</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>"<br>"</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>"<br>"</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 参数
Atas ialah kandungan terperinci 比较PHP中字符串的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!