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 discuz 主题表和回帖表的设计
Mar 13 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
php unlink()函数使用教程
Jul 12 PHP
Laravel框架路由管理简单示例
May 07 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 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
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP使用数组实现队列
2012/02/05 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
广告显示判断
2006/08/31 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
AngularJS快速入门
2015/04/02 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
通过实例了解python property属性
2019/11/01 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
公务员培训心得体会
2013/12/28 职场文书
教师队伍管理制度
2014/01/14 职场文书
《赶海》教学反思
2014/04/20 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
母亲节感言
2015/08/03 职场文书
解除租赁合同协议书
2016/03/21 职场文书
Python List remove()实例用法详解
2021/08/02 Python