PHP字符串比较函数 strcmp()、strcasecmp()、strnatcmp(

zxh5566  2016-08-07 17:15   Hits: 

比较字符串是任何编程语言的字符串处理功能中重要的特性之一,在PHP除了可以使用比较运算符==、<、>加以比较,PHP还提供了一系列的比较函数,使PHP可以进行更复杂的字符串比较。如strcmp()、strcasecmp()、strnatcmp()等函数。

1、按字节顺序进行字符串比较
按字节顺序进行字符串的比较可以使用strcmp()和strcasecmp()两个函数,其中函数strcasecmp()可以忽略字符串中字母的大小写进行比较。这两个函数的用法相似,都需要传入进行比较的两个字符串参数,可以对输入的str1和str2两个字符串按照字节的ASCII值从两个字符串的首字节开始比较,如果相等则进入下一个字节的比较,直至结束比较。返回以下三个值之一

如果str1等于str2 返回0
如果str1大于str2 返回1
如果str1小于str2 返回-1

在下面的程序中通过比较后的返回值判断两个比较的字符串大小,使用strcmp()函数区分字符串中字母大小写的比较,使用strcasecmp()函数忽略字符串中字母大小写的比较,当然也可以对中文等多字节字符进行比较,下面的程序为这两个函数的使用范例。

<?php
$username = "admin";
$password = "lamp";
if(strcmp($username,"admin") == 0){
echo '用户名存在';
}
if(strcasecmp(strtolower($username),strtolower("admin")) == 0){
echo '用户名存在';
}

2、按自然顺序进行字符串比较

除了可以按照字节位的字典顺序进行比较外,PHP还提供了按照自然排序法对字符串进行比较,所谓自然排序是按照人们的日常生活中的思维习惯进行排序,即将字符串中的数字部分按照数字大小进行比较,例如按照字节比较时4大于33,因为4大于3,而按照自然排序33大于4,使用strnatcmp()函数按自然排序法比较两个字符串,该函数对大小写敏感,其使用格式与strcmp()函数类似,在下面的例子中,对一个数组中带有数字的文件名,使用冒泡排序法通过两种比较方法排序。

<?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=0;$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;
}
}
}
}
}
}

上一篇:PHP字符串格式函数strrev()、number_format()、md5()
下一篇:PHP中的preg_match()、preg_match_all()