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 远程图片保存到本地的函数类
Dec 08 PHP
php通过字符串调用函数示例
Mar 02 PHP
destoon常用的安全设置概述
Jun 21 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
php5与php7的区别点总结
Oct 11 PHP
Yii框架应用组件用法实例分析
May 15 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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冒泡排序算法的深入理解
2013/06/09 PHP
学习php中的正则表达式
2014/08/17 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
使用PHP开发留言板功能
2019/11/19 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
javascript实现密码验证
2015/11/10 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
python实现机器人行走效果
2018/01/29 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
python打开音乐文件的实例方法
2020/07/21 Python
python实现移动木板小游戏
2020/10/09 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
为什么会有内存对齐
2016/10/10 面试题
奥巴马英文演讲稿
2014/05/15 职场文书
工程服务质量承诺书
2015/04/29 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS