PHP中比较两个字符串找出第一个不同字符位置例子

 更新时间:2014年04月08日 14:23:21   作者:  
这是一个在stackoverflow上的问题。 给出两个长度相等的字符串,找出这两个字符串中第一个不同的字符位置。

一般的做法就会这样:

复制代码 代码如下:

<?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
             );
}

相关文章

  • thinkPHP5框架设置404、403等http状态页面的方法

    thinkPHP5框架设置404、403等http状态页面的方法

    这篇文章主要介绍了thinkPHP5框架设置404、403等http状态页面的方法,结合实例形式分析了thinkPHP5框架设置404页面的相关配置、视图显示页面及控制器调用相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • CentOS 上搭建 PHP7 开发测试环境

    CentOS 上搭建 PHP7 开发测试环境

    本文给大家分享的是作者在centos上搭建部署php7的开发测试环境的全部过程,非常的细致,有需要的小伙伴可以参考下
    2017-02-02
  • 简单的PHP留言本实例代码

    简单的PHP留言本实例代码

    对于学习php的朋友,开始做个留言板对于php+mysql的操作有个简单的过程。学会了这个基本上php开始入门了。
    2010-05-05
  • phpstudy本地环境搭建超详细图文教程

    phpstudy本地环境搭建超详细图文教程

    这篇文章主要给大家介绍了关于phpstudy本地环境搭建超详细图文教程的相关资料,phpStudy是集安全、高效、功能于一体且完全免费的一键服务器环境搭建软件,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • PHP中类的自动加载的方法

    PHP中类的自动加载的方法

    本篇文章主要介绍了PHP中类的自动加载的方法。类的自动加载是指在外面的页面中并不需要去“引入”类文件,但是程序会在需要的时候动态加载需要的类文件。
    2017-03-03
  • 百度地图API应用之获取用户的具体位置

    百度地图API应用之获取用户的具体位置

    以前一直用高德地图的API,后来因为需求,必须用百度的地图API。这些API都已经封装的很智能了,只需要一定的编程思维,就很简单可以实现功能。
    2014-06-06
  • yii分页组件用法实例分析

    yii分页组件用法实例分析

    这篇文章主要介绍了yii分页组件用法,结合实例形式较为详细的分析了yii分页组件的调用及具体的分页显示实现技巧,需要的朋友可以参考下
    2015-12-12
  • 让CodeIgniter数据库缓存自动过期的处理的方法

    让CodeIgniter数据库缓存自动过期的处理的方法

    按官方的说法,缓存设置后永不过期,除非你调用方法主动删除。这篇文章主要介绍了CodeIgniter数据库缓存自动过期的处理,需要的朋友可以参考下
    2014-06-06
  • thinkPHP查询方式小结

    thinkPHP查询方式小结

    这篇文章主要介绍了thinkPHP查询方式,结合实例形式总结分析了thinkPHP的普通查询、表达式查询、区间查询、统计查询及SQL直接查询的使用技巧,需要的朋友可以参考下
    2016-01-01
  • 深入理解PHP+Mysql分布式事务与解决方案

    深入理解PHP+Mysql分布式事务与解决方案

    这篇文章主要介绍了深入理解PHP+Mysql分布式事务与解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论