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读取30天之内的根据算法排序的代码
Apr 06 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
支持中文的php加密解密类代码
Nov 27 PHP
PHP的SQL注入过程分析
Jan 06 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP中FTP相关函数小结
Jul 15 PHP
php Session无效分析资料整理
Nov 29 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 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
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
React 组件间的通信示例
2018/06/14 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
小程序实现多选框功能
2018/10/30 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python实现交并比IOU教程
2020/04/16 Python
Python之变量类型和if判断方式
2020/05/05 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
Python扫描端口的实现
2021/01/25 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
Java语言的优势
2015/01/10 面试题
公司市场部岗位职责
2015/04/15 职场文书
入党自传范文2015
2015/06/26 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
PHP控制循环操作的时间
2021/04/01 PHP