PHP中比较两个字符串找出第一个不同字符位置例子


Posted in PHP onApril 08, 2014

一般的做法就会这样:

<?php
for ($offset = 0; $offset < $length; ++$offset) {
    if ($str1[$offset] !== $str2[$offset]) {
        return $offset;
    }
}

而问题下面给出的最佳答案是用异或操作符( ^ ),以前从来没用过这个操作符,也不知道能用到什么地方,今天算是学到。

因为一般情况下,当你对两个字符串进行异或操作的时候,相同的字符的异或结果是null(“\0”),所以我们只要找出第一个非null(“\0”)字符就可以了。

<?php
$position = strspn($string1 ^ $string2, "\0");

很明显这是一个更优雅高效的方法。 另外,回答的人还附加了一个多字节字符的解决办法。
<?php
function getCharacterOffsetOfDifference($str1, $str2, $encoding = 'UTF-8') {
    return mb_strlen($str1, $encoding)
           - mb_strlen(
                 mb_strcut(
                     $str1,
                     strspn($str1 ^ $str2, "\0"),
                     mb_strlen($str1, '8bit'),
                     $encoding
                 ),
                 $encoding
             );
}
PHP 相关文章推荐
php smarty的预保留变量总结
Dec 04 PHP
PHP 柱状图实现代码
Dec 04 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
PHP中的事务使用实例
May 26 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php获取当前页面完整URL地址
Dec 30 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 #PHP
php实现telnet功能示例
Apr 08 #PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 #PHP
php实现水仙花数的4个示例分享
Apr 08 #PHP
php命令行使用方法和命令行参数说明
Apr 08 #PHP
php实现httpclient类示例
Apr 08 #PHP
php使用json_encode对变量json编码
Apr 07 #PHP
You might like
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
Django返回json数据用法示例
2016/09/18 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python实现单链表的方法示例
2019/09/03 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
python 5个实用的技巧
2020/09/27 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
法院授权委托书格式
2014/09/28 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书