PHP从头开始查找公共子串的范围

时间:2014-12-10 03:20:38

标签: php

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

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

我看到很多问题要求在开始时找不到共同的子串,或者当有两个以上的字符串时,这看起来很复杂。我只有两个字符串,它们有一个共同的前缀。有一个PHP函数来获取这两个字符串不同的索引吗?

2 个答案:

答案 0 :(得分:0)

您可以通过逐个字符比较来尝试使用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 />';

答案 1 :(得分:-1)

此处回答类似问题: Find first character that is different between two strings

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