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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
php中stdClass的用法分析
Feb 27 PHP
php生成图片缩略图的方法
Apr 07 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 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面向对象编程self和static的区别
2016/05/08 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python ljust rjust center输出
2008/09/06 Python
Python程序中设置HTTP代理
2016/11/06 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
python按照多个条件排序的方法
2019/02/08 Python
python实现的生成word文档功能示例
2019/08/23 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
企业管理部经理岗位职责
2013/12/24 职场文书
创业计划书六个要素
2013/12/26 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
家长会学生演讲稿
2014/04/26 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
关于python中模块和重载的问题
2021/11/02 Python
微信小程序实现轮播图指示器
2022/06/25 Javascript
MySQL池化框架学习接池自定义
2022/07/23 MySQL