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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
phpphp图片采集后按原路径保存图片示例
Feb 18 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP实现APP微信支付的实例讲解
Feb 10 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
django迁移数据库错误问题解决
2019/07/29 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
售后服务承诺书
2014/03/26 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
白莲教口号
2014/06/18 职场文书
校本研修个人总结
2015/02/28 职场文书
2019消防宣传标语!
2019/07/10 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
golang内置函数len的小技巧
2021/07/25 Golang
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js