
5.4.4 比较字符串
在PHP中,对于字符串之间的比较有3种方法,下面分别对这3种方法进行详细讲解。
1.按字节进行字符串的比较
按字节比较字符串有两种方法,分别是利用strcmp()函数和strcasecmp()函数来实现。这两个函数的区别是strcmp()函数区分大小写,而strcasecmp()不区分大小写。strcmp()函数和strcasecmp()函数的语法格式基本相同,具体如下:
strcmp(string1, string2); strcasecmp(string1, string2);
其中参数string1和参数string2指定比较的两个字符串。如果相等则函数返回值为0;如果参数string1大于参数string2,则返回值大于0;如果参数string1小于参数string2,则返回值小于0。
【例5-10】按字节比较字符串(实例文件:源文件\ch05\5.10.php)。

运行结果如图5-12所示。

图5-12 按字节比较字符串
提示:在PHP中,使用strcmp()函数对字符串之间进行比较的应用是非常多的,例如:使用strcmp()函数比较在用户登录网站中输入的用户名和密码是否正确,如果在验证用户和密码时不用此函数,那么输入用户名和密码无论是大写还是小写,只要正确即可登录。使用了srtcmp()函数之后就避免了这种情况,即使输入的正确,也必须大小写全部匹配才可以登录,这样便提高了网站的安全性。
2.按自然排序法进行字符串的比较
按照自然排序法进行字符串的比较是通过使用strnatcmp()函数来实现的。自然排序法比较的是字符串的数字部分,将字符串中的数字按照大小进行比较。它的语法格式如下:
如果参数string1和参数string2相等则函数返回值为0;如果参数string1大于参数string2,则函数返回值大于0;如果参数string1小于参数string2,则函数返回值小于0。
strnatcmp(string1,string2)
【例5-11】按照自然排序法进行字符串的比较(实例文件:源文件\ch05\5.11.php)。

运行结果如图5-13所示。

图5-13 按自然排序法比较字符串
提示:strnatcmp()函数区分字母大小写。按照自然排序法进行比较,还可以使用另一个与strnatcmp()函数作用相同,但不区分大小写的strnatcasecmp()函数。
3.指定从源字符的位置开始比较
strncmp()函数用来比较字符串中的前n个字符。语法格式如下:
strncmp(string1, string2, length);
strncmp()函数的参数说明如表5-6所示。
表5-6 strncmp()函数的参数说明

如果参数string1和参数string2相等则函数返回值为0;如果参数string1大于参数string2,则函数返回值大于0;如果参数string1小于参数string2,则函数返回值小于0。
【例5-12】指定从源字符的位置开始比较(实例文件:源文件\ch05\5.12.php)。

运行结果如图5-14所示。

图5-14 指定从源字符的位置开始比较
从上面代码中可以看出,由于变量$str1和$str2中的第6个字符串不同,且d的ASCII码小于s的ASCII码,所以函数返回值为-1;由于变量$str4中字符串的首字母为大写,与变量$str3中字符串不同,a的ASCII码大于A的ASCII码,因此比较后的函数返回值是1。