基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解


Posted in PHP onMay 15, 2013

使用“===”来判断,至于它和“==”的区别,简单来说就是前者强调“identical(相同的,完全相同)”类型也要求一样;后者要求“equal(相等)”,值相同就可以了。或者使用strcmp来判断,但是这个能够告诉你两个字符串是否相等,但是无法告诉你在哪里不同。

一般能用 !=, == 比较两个对象是否相等,之所以说是两个对象,是因为他们不一定全部为字符串,也能为整型等等。比如

$a = "joe"; 
$b = "jerry"; 
if ($a != $b) 
{ 
    echo "不相等"; 
} 
else 
{ 
    echo "相等"; 
}

如果用  !== , === 比较的话,两个对象的类型要严格相等才能返回true;否则用==,!=则会将字符串自动转换成相应的类型,以便进行比较.
22 == "22"; // 返回 true 
22 === "22"; // 返回falsePHP 用于字符串比较的函数:strcmp(),strcasecmp(),strncasecmp(), strncmp(),他们都是 如果前者比后者大,则返回大于0 的整数;如果前者比后者小,则返回小于0 的整数;如果两者相等,则返回0.1)strcmp是用于 区分大小写 (即大小写敏感)的字符串比较:
2)echo strcmp("abcdd", "abcde"); // 返回 1 (>0), 比较的是 "b"和"b"
3)strcasecmp用于不区分大小写的字符串比较:
4)echo strcasecmp("abcdd", "abcde"); // 返回 -1 (<0), 比较的是"d"和"e"
strncmp用于比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncmp("abcdd", "abcde", 3); // 返回 1 (>0), 比较了 abc 和 abc
strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncasecmp("abcdd", "abcde", 3); // 返回 0, 比较了 abc 和 abc, 由于不区分大小写,所以两者是相同的。
更有一种情况是单单比较字符串大小,达不到我们预定的需求,比如照常理 10.gif 会比 5.gif 大,但如果应用上面几个函数,就会返回 -1,即表示 10.gif比5.gif,针对这种情况,php提供了两个自然对比的函数strnatcmp,strnatcasecmp:
echo strnatcmp("10.gif", "5.gif"); // 返回 1 (>0) 
echo strnatcasecmp("10.gif", "5.gif"); // 返回 1 (>0)

 

PHP 相关文章推荐
两种php调用Java对象的方法
Oct 09 PHP
PHP 实用代码收集
Jan 22 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
ThinkPHP控制器详解
Jul 27 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
laravel框架上传图片实现实时预览功能
Oct 14 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php封装的page分页类完整实例代码
Feb 01 PHP
解析dedecms空间迁移步骤详解
May 15 #PHP
基于php缓存的详解
May 15 #PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 #PHP
深入php之规范编程命名小结
May 15 #PHP
PHP+jQuery实现自动补全功能源码
May 15 #PHP
深入分析php之面向对象
May 15 #PHP
深入解析php之apc
May 15 #PHP
You might like
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
javascript数组的使用
2013/03/28 Javascript
js单例模式的两种方案
2013/10/22 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
python修改操作系统时间的方法
2015/05/18 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
详解Python字典小结
2018/10/20 Python
详解Python正则表达式re模块
2019/03/19 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
高校辅导员推荐信范文
2013/12/25 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js