PHP入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

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。