Heim  >  Artikel  >  Backend-Entwicklung  >  PHP中比较两个字符串找出第一个不同字符位置例子_PHP教程

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

WBOY
WBOYOriginal
2016-07-13 10:34:28815Durchsuche

一般的做法就会这样:

复制代码 代码如下:

for ($offset = 0; $offset     if ($str1[$offset] !== $str2[$offset]) {
        return $offset;
    }
}

而问题下面给出的最佳答案是用异或操作符( ^ ),以前从来没用过这个操作符,也不知道能用到什么地方,今天算是学到。

因为一般情况下,当你对两个字符串进行异或操作的时候,相同的字符的异或结果是null(“\0”),所以我们只要找出第一个非null(“\0”)字符就可以了。

复制代码 代码如下:

$position = strspn($string1 ^ $string2, "\0");

很明显这是一个更优雅高效的方法。 另外,回答的人还附加了一个多字节字符的解决办法。
复制代码 代码如下:

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/750855.htmlTechArticle一般的做法就会这样: 复制代码 代码如下: ?php for ($offset = 0; $offset $length; ++$offset) { if ($str1[$offset] !== $str2[$offset]) { return $offset; } } 而问题下...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn