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 21 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
php IP及IP段进行访问限制的代码
Dec 17 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 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中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
实例讲解php实现多线程
2019/01/27 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Python中的Numpy入门教程
2014/04/26 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
《故乡》教学反思
2014/04/10 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
重阳节主题班会
2015/08/17 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
muduo TcpServer模块源码分析
2022/04/26 Redis