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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
PHP url 加密解密函数代码
Aug 26 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php中异常处理方法小结
Jan 09 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
Mar 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 柱状图实现代码
2009/12/04 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
JQuery each打印JS对象的方法
2013/11/13 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
js返回顶部实例分享
2016/12/21 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python中argparse模块用法实例详解
2015/06/03 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Django nginx配置实现过程详解
2020/09/10 Python
五十岁生日宴会答谢词
2014/01/15 职场文书
发展部经理职责规定
2014/02/22 职场文书
基层党员对照检查材料
2014/09/24 职场文书
先进党支部事迹材料
2014/12/24 职场文书
小学生思想品德评语
2014/12/31 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
超市员工管理制度
2015/08/06 职场文书
严以用权学习心得体会
2016/01/12 职场文书
车辆挂靠协议书
2016/03/23 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
python入门之算法学习
2021/04/22 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL
Pygame Draw绘图函数的具体使用
2021/11/17 Python