9.4 字符串比较函数
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
?>
equals.php
<?php
/* 1. 使用等号比较字符串(常见)
*
* 注意: 如果是不区分大小写的进行比较,两个比较的字符串要么都转成大写, 要么都转成小写
*
*
*/
$str1 = "abc";
$str2 = "Abc";
if( strtoupper($str1) == strtoupper($str2) ) {
echo "相等";
} else {
echo "不相等";
}
strcasecmp.php
<?php
/* 1. 使用等号比较字符串(常见)
*
* 注意: 如果是不区分大小写的进行比较,两个比较的字符串要么都转成大写, 要么都转成小写
*
*
*/
$str1 = "abc";
$str2 = "Bbc";
switch(strcasecmp($str1, $str2)) {
case 0:
echo "第一个字符串$str1 等于 第二个字符串 $str2"; break;
case -1:
echo "第一个字符串$str1 小于 第二个字符串 $str2"; break;
case 1:
echo "第一个字符串$str1 大于 第二个字符串 $str2"; break;
}
strcmp.php
<?php
/* 1. 使用等号比较字符串(常见)
*
* 注意: 如果是不区分大小写的进行比较,两个比较的字符串要么都转成大写, 要么都转成小写
*
*
*/
$str1 = "abc";
$str2 = "Abc";
switch(strcmp($str1, $str2)) {
case 0:
echo "第一个字符串$str1 等于 第二个字符串 $str2"; break;
case -1:
echo "第一个字符串$str1 小于 第二个字符串 $str2"; break;
case 1:
echo "第一个字符串$str1 大于 第二个字符串 $str2"; break;
}
test.php
<?php
/* 1. 使用等号比较字符串(常见)
*
* 注意: 如果是不区分大小写的进行比较,两个比较的字符串要么都转成大写, 要么都转成小写
*
* 2. 字符比较
* strcmp()
* strcasecmp()
*
* 3. 按自然顺序比较
* strnatcmp()
* strnatcasecmp();
*
*
*/
$arr = array("File1.txt", "file2.txt", "file11.txt", "file12.txt");
usort($arr, "strnatcasecmp");
print_r($arr);
网友评论