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中利用XML技术构造远程服务(下)
Oct 09 PHP
杏林同学录(九)
Oct 09 PHP
PHP入门
Oct 09 PHP
用PHP实现 上一篇、下一篇的代码
Sep 29 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
php使用递归计算文件夹大小
Dec 24 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python多线程和队列操作实例
2015/06/21 Python
利用Python爬取可用的代理IP
2016/08/18 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
什么是.net
2015/08/03 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
大学本科生的个人自我评价
2013/12/09 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
合作协议书怎么写
2014/04/18 职场文书
增员口号大全
2014/06/18 职场文书
辞职书格式样本
2015/02/26 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
教师病假条范文
2015/08/17 职场文书
学习党章心得体会2016
2016/01/15 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js