PHP字符串比较函数strcmp()和strcasecmp()使用总结


Posted in PHP onNovember 19, 2014

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

1.按字节顺序进行字符串比较

要按字节顺序进行字符串的比较,可以使用strcmp()和strcasecmp()两个函数,其中函数strcasecmp()可以忽略字符串中字母的大小写进行比较。这两个函数的原型如下所示:

in strcmp(string str1,string str2)               //区分字符串中字母大小写地比较

int strcasecmp(string str1,string str2)                //忽略字符串中字母大小写地比较

这两个函数的用法相似,都需要传入进行比较的两个字符串参数。可以对输入的str1和str2两字符串,按照字节的ASCII值从两个字符串的首字节开始比较,如果相等则进入下一个字节的比较,直至结束比较。返回以下三个值之一:
★如果str1等于str2则返回0。
★如果str1大于str2则返回1。
★如果str1小于str2则返回-1。
在下面的程序中通过比较后的返回值判断两个比较字符串大小。使用strcmp()函数区分字符串中字母大小写的比较,使用strcasecmp()函数忽略字符串中字母大小写的比较。当然没有实际意义。代码如下所示:
<?php

$username = "Admin";

$password = "lampBrother";

 

//不区分大小写的比较,如果两个字符串相等返回0

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()函数相似。

在下面的例子中,对一个数组中带有数字的文件名,使用冒泡排序法通过两种比较方法排序。代码如下所示:

<?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++){

        //如果第二个参数为ture则使用strcmp()函数比较大小

            if($select){

            //前后两个值比较结果大于0则交换位置

                if(strcmp($arr[$j],$arr[j+1])>0){

                    $tmp = $arr[$j];

                    $arr[$j] = $arr[$j+1];

                    $arr[$j+1] = $tmp;

                }

           //如果第二个参数为false则使用strnatcmp()函数比较大小 

           }else{

            //如果比较结果大于0交换位置

                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));         //选择按字典顺序排序: file1.txt file11.txt file2.txt file22.txt

print_r(mySort($files,false));          //选择按自然顺序排序:file1.txt file2.txt file11.txt file22.txt

?>

在PHP中也提供了这个函数忽略大小写的版本的函数strnatcasecmp()用法与strnatcmp()函数相同。

PHP 相关文章推荐
编写自己的php扩展函数
Oct 09 PHP
SMARTY学习手记
Jan 04 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
php修改指定文件后缀的方法
Sep 11 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 #PHP
PHP中使用数组指针函数操作数组示例
Nov 19 #PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 #PHP
PHP分页类集锦
Nov 18 #PHP
php去除数组中重复数据
Nov 18 #PHP
php中获取主机名、协议及IP地址的方法
Nov 18 #PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 #PHP
You might like
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP 变量定义和变量替换的方法
2009/07/30 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
JS中数组重排序方法
2016/11/11 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
详解 Python 读写XML文件的实例
2017/08/02 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python中的取模运算方法
2018/11/10 Python
python实现kmp算法的实例代码
2019/04/03 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
总经理秘书工作职责
2013/12/26 职场文书
春节联欢会主持词
2014/03/24 职场文书
思想作风建设心得体会
2014/10/22 职场文书
艺术节开幕词
2015/01/28 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
心得体会格式及范文
2016/01/25 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js