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自动适应范围的分页代码
Aug 05 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
php实现网站留言板功能
Nov 04 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
php文件管理基本功能简单操作
Jan 16 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
一个ftp类(ini.php)
2006/10/09 PHP
一个PHP+MSSQL分页的例子
2006/10/09 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
表单提交验证类
2006/07/14 Javascript
静态页面的值传递(三部曲)
2006/09/25 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python 网络编程常用代码段
2016/08/28 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
10个示例带你掌握python中的元组
2020/11/23 Python
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android