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新手上路(十三)
Oct 09 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
php简单生成随机数的方法
Jul 30 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 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连接access数据库
2015/03/27 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
python实现简单socket通信的方法
2016/04/19 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
计算机应届毕业生自荐信范文
2014/02/23 职场文书
亲子活动总结
2014/04/26 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
开会通知
2015/04/20 职场文书
二十年同学聚会感言
2015/07/30 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
git stash(储藏)的用法总结
2022/06/25 Servers
HttpClient实现表单提交上传文件
2022/08/14 Java/Android