【问题标题】:PHP finding extent of common sub-string from startPHP从开始查找公共子字符串的范围
【发布时间】:2014-12-10 03:20:37
【问题描述】:

我有两个开头相同的字符串,但在某些时候是不同的。我想知道这两个字符串共有多少个字符。

strpos 似乎与此相反;它假定一个字符串完全在另一个字符串中找到,但不一定在起始偏移量处。

我看到很多问题都在询问是否在开始时寻找公共子字符串,或者当有两个以上的字符串时,这似乎使事情变得相当复杂。我只有两个字符串,它们有一个共同的前缀。是否有一个 PHP 函数来获取这两个字符串不同的索引?

【问题讨论】:

  • 简单的for怎么样?

标签: php


【解决方案1】:

您可以通过逐个字符比较来尝试使用 for 循环。像这样的

$str1 = 'MyStringFirst';
$str2 = 'MyStringSecond';
$match_from_left = '';
$count = 0;
$limit = strlen($str1) > strlen($str2) ? strlen($str2) : strlen($str1);
for($i = 0; $i < $limit; $i++){
    if($str1[$i] != $str2[$i]){
        break;
    } 
    $count++;
    $match_from_left .= $str1[$i];
}

echo 'Count: ' . $count . '<br />';
echo 'Match: ' . $match_from_left . '<br />';

【讨论】:

    【解决方案2】:

    在这里回答了类似的问题:Find first character that is different between two strings

    您可以使用内置的 PHP 函数similar_text(),但是如下所述,这不会获取索引,只会计算相同字符的数量。

    【讨论】:

    • 这不考虑字符的位置。 similar_text('abcde','abcdfe') 给出 5,而不是 4。
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多