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

2015-01-24信息快讯网

这是一个在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
             );
}

php获取一个变量的名字的方法
当前比较流行的两款PHP加密、解密工具Zend Guard和iconCube介绍
如何让thinkphp在模型中自动完成session赋值小教程
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
php设计模式之简单工厂模式详解
PHP处理Json字符串解码返回NULL的解决方法
一个图片地址分解程序(用于PHP小偷程序)
又一个PHP实现的冒泡排序算法分享
PHP获取一个字符串中间一部分字符的方法
php中隐形字符65279(utf-8的BOM头)问题
php中将一段数据存到一个txt文件中并显示其内容
PHP解码unicode编码的中文字符代码分享
php mb_substr()函数截取中文字符串应用示例
PHP自带函数给数字或字符串自动补齐位数
完美的2个php检测字符串是否是utf-8编码函数分享
PHP中Session引起的脚本阻塞问题解决办法
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
php实现telnet功能示例
C#使用PHP服务端的Web Service通信实例
php实现水仙花数的4个示例分享
php命令行使用方法和命令行参数说明
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
php 字符串中的\n换行符无效、不能换行的解决方法
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
php像数组一样存取和修改字符串字符
一个显示效果非常不错的PHP错误、异常处理类
一个PHP针对数字的加密解密类
递归删除一个节点以及该节点下的所有节点示例
php过滤所有恶意字符(批量过滤post,get敏感数据)
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
使用PHP导出Redis数据到另一个Redis中的代码
php截取字符串之截取utf8或gbk编码的中英文字符串示例
©2014-2024 dbsqp.com