8.4.1 字符串比较函数
按字节顺序进行字符串比较
PHP中,有多种方法可以对字符串进行比较,除了可以直接使用条件运算符(<, >, ==)加以比较外。
按字节进行字符串的比较
strcmp();(整个比较是否相同)
strncmp();(指定比较长度的字符串比较)
strcasecmp(); (不区分大小写的全串比较)
<?php
$userName = "Admin"; //声明一个字符串作为用户名
//if(strcasecmp($userName, “admin”) == 0) { //不区分大小写地比较,相等返回0
if( strcasecmp(strtolower($userName), strtolower(“admin”)) == 0 ) { //采用统一小写后比较
echo "用户名存在";
}
switch(strcmp($ userName, “admin")) { //区分字符串中字母的大小写比较
case 0: echo "两个字符串相等<br>"; break; //两个字符串相等则返回0
case 1: echo "第一字串大于第二字串<br>"; break; //第一个字符串大时则返回1
case -1: echo "第一字串小于第二字串<br>"; break; //第一个字符串小时则返回-1
}
strnatcmp — 使用自然排序算法比较字符串
格式:int strnatcmp ( string $str1 , string $str2 )
该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是“自然顺序”。注意该比较区分大小写。
与其他字符串比较函数类似,如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。
<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo “使用strcmp排顺序后:\n";
usort($arr1, "strcmp");
print_r($arr1);
//[0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png
echo “\n 使用strnatcmp排序后:\n";
usort($arr2, "strnatcmp");
print_r($arr2);
//[0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png
?>
qeuls.php
<?php
$str= "hello";
$str2 = "Hello";
if(strtoupper($str) == strtoupper($str2)) {
echo "相等";
} else {
echo "不相等";
}
strcmp.php
<?php
$str= "aellc";
$str2 = "Aellc";
switch(strcasecmp($str, $str2)) {
case 1:
echo "第一个数大于第二个数<br>";
break;
case -1:
echo "第一个数小于第二个数<br>";
break;
case 0:
echo "两个字符串相等<br>";
break;
}
strnatcmp.php
<?php
$str= "file11.txt";
$str2 = "file2.txt";
switch(strnatcasecmp($str, $str2)) {
case 1:
echo "第一个数大于第二个数<br>";
break;
case -1:
echo "第一个数小于第二个数<br>";
break;
case 0:
echo "两个字符串相等<br>";
break;
}
$arr=array("file1.txt", "file2.txt", "file11.txt", "file12.txt");
usort($arr, );
test.php
<?php
$arr=array("file1.txt", "File2.txt", "File11.txt", "file12.txt");
usort($arr, "strnatcasecmp");
print_r($arr);