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 入门学习资料
Jan 01 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
PHP children()函数讲解
Feb 03 PHP
YII框架关联查询操作示例
Apr 29 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
php5.3 废弃函数小结
2010/05/16 PHP
PHP多态代码实例
2015/06/26 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
python PyTorch预训练示例
2018/02/11 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python3+PyQt5实现柱状图
2018/04/24 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python打造爬虫代理池过程解析
2019/08/15 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Python必须了解的35个关键词
2020/07/16 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
如何将字串String转换成整数int
2015/02/21 面试题
25道Java面试题集合
2013/05/21 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
无保留意见审计报告
2015/06/05 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js