PHP находит экстент общей подстроки от начала

0

У меня две строки, которые начинаются одинаково, но в какой-то момент разные. Я хочу найти, сколько персонажей объединяет две строки.

Кажется, что strpos противоположна этому; он предполагает, что одна строка найдена полностью в другой, но не обязательно при стартовом смещении.

Я вижу много вопросов, которые задают вопрос о поиске общих подстрок, когда они не в начале, или когда есть более двух строк, и это, похоже, усложняет ситуацию совсем немного. У меня всего две строки, и у них общий префикс. Есть ли функция PHP для получения индекса, в котором эти две строки отличаются?

  • 0
    Что насчет простого for ?
Теги:

2 ответа

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 />';
-2

Подобный вопрос ответил здесь: найдите первый символ, который отличается между двумя строками

Вы можете использовать встроенную функцию PHP similar_text(), однако, как указано ниже, это не получает индекс, а только счетчик числа одинаковых символов.

  • 0
    Это не принимает во внимание положение персонажей. Similar_text ('abcde', 'abcdfe') дает 5, а не 4.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню