国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

PHP中比較兩個(gè)字符串找出第一個(gè)不同字符位置例子

2024-05-04 23:22:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一般的做法就會(huì)這樣:

復(fù)制代碼 代碼如下:


<?php
for ($offset = 0; $offset < $length; ++$offset) {
    if ($str1[$offset] !== $str2[$offset]) {
        return $offset;
    }
}


而問(wèn)題下面給出的最佳答案是用異或操作符( ^ ),以前從來(lái)沒(méi)用過(guò)這個(gè)操作符,也不知道能用到什么地方,今天算是學(xué)到。

因?yàn)橐话闱闆r下,當(dāng)你對(duì)兩個(gè)字符串進(jìn)行異或操作的時(shí)候,相同的字符的異或結(jié)果是null(“/0”),所以我們只要找出第一個(gè)非null(“/0”)字符就可以了。

復(fù)制代碼 代碼如下:


<?php
$position = strspn($string1 ^ $string2, "/0");


很明顯這是一個(gè)更優(yōu)雅高效的方法。 另外,回答的人還附加了一個(gè)多字節(jié)字符的解決辦法。

復(fù)制代碼 代碼如下:


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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柳江县| 泸水县| 崇明县| 滁州市| 托里县| 西丰县| 略阳县| 肥西县| 开平市| 郸城县| 英山县| 永德县| 丹凤县| 瓮安县| 商水县| 新巴尔虎右旗| 天全县| 当阳市| 屏山县| 滕州市| 社会| 长沙县| 饶阳县| 金寨县| 吉隆县| 迁安市| 双鸭山市| 资兴市| 银川市| 柳河县| 桦川县| 公主岭市| 汤原县| 泸水县| 福建省| 沅陵县| 东丽区| 盘山县| 文水县| 云梦县| 安乡县|