比较字符串是任何编程语言的字符串处理功能中重要的特性之一。在PHP中除了可以使用比较运算符号(==、<或>)加以比较外,还提供了一系列的比较函数,使PHP可以进行更复杂的字符串比较。如strcmp()、strcasecmp()和strnatcmp()等函数。
1、按字节顺序进行字符串比较直线电机滑台
要按字节顺序进行字符串的比较,可以使用strcmp()和strcasecmp()两个函数,其中函数strcasecmp()可以忽略字符串中字母的大小写进行比较。这两个函数的原型如下所示:
1
2
|
in strcmp (string str1,string str2)
int strcasecmp (string str1,string str2)
|
这两个函数的用法相似,都需要传入进行比较的两个字符串参数。可以对输入的str1和str2两字符串,按照字节的ASCII值从两个字符串的首字节开始比较,如果相等则进入下一个字节的比较,直至结束比较。返回以下三个值之一: 1、如果str1等于str2则返回0。 2、如果str1大于str2则返回1。 3、如果str1小于str2则返回-1。 在下面的程序中通过比较后的返回值判断两个比较字符串大小。使用strcmp()函数区分字符串中字母大小写的比较,使用strcasecmp()函数忽略字符串中字母大小写的比较。代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?php
$username = "Admin" ;
$password = "lampBrother" ;
if ( strcasecmp ( $userName , "admin" )== 0){
echo "用户名存在" ;
}
if ( strcasecmp ( strtolower ( $userName ), strtolower ( "admin" )) == 0){
echo "用户名存在" ;
}
switch ( strcmp ( $password , "lampbrother" )){
case 0:
echo "两个字符串相等<br>" ; break ;
case 1:
echo "第一个字符串大于第二个字符串<br>" ; break ;
case -1:
echo "第一个字符串小于第二个字符串<br>" ; break ;
}
?>
|
2、按自然排序进行字符串比较
除了可以按照字节位的字典顺序进行比较外,PHP还提供了按照“自然排序”法对字符串进行比较。所谓自然排序,是指按照人们的日常生活中的思维习惯进行排序,即将字符串中的数字部分按照数字大小进行比较。
例如按照字节比较时“4”大于“33”,因为“4”大于“33”中的第一个字符,而按照自然排序法则“33”大于“4”。用strnatcmp()函数按自然排序法比较两个字符串,该函数对大小写敏感,其使用格式与strcmp()函数相似。
在下面的例子中,对一个数组中带有数字的文件名,使用冒泡排序法通过两种比较方法排序。代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?php
$files = array ( "file11.txt" , "file22.txt" , "file1.txt" , "file2.txt" );
function mySort( $arr , $select = false){
for ( $i =0; $i < count ( $arr ); $i ++){
for ( $j ; $j < count ( $arr )-1; $j ++){
if ( $select ){
if ( strcmp ( $arr [ $j ], $arr [j+1])>0){
$tmp = $arr [ $j ];
$arr [ $j ] = $arr [ $j +1];
$arr [ $j +1] = $tmp ;
}
} else {
if ( strnatcmp ( $arr [ $j ], $arr [ $j +1])>0){
$tmp = $arr [ $j ];
$arr [ $j ] = $arr [ $j +1];
$arr [ $j +1]; = $tmp ;
}
}
}
}
return $arr ;
}
print_r(mySort( $files ,true));
print_r(mySort( $files ,false));
?>
|
在PHP中也提供了这个函数忽略大小写的版本的函数strnatcasecmp()用法与strnatcmp()函数相同。
|
请发表评论