国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 南岸区| 孟村| 隆安县| 廊坊市| 玉林市| 桃源县| 伊吾县| 都兰县| 西充县| 南岸区| 双桥区| 郴州市| 鱼台县| 台山市| 湟源县| 千阳县| 丹寨县| 桂东县| 虎林市| 杭锦旗| 蓬溪县| 崇左市| 虞城县| 山丹县| 辉县市| 和林格尔县| 阿尔山市| 无锡市| 万载县| 洪湖市| 兴化市| 贞丰县| 金沙县| 通榆县| 阜新| 平定县| 柳江县| 浦县| 阳江市| 高阳县| 洪江市|