У меня две строки, которые начинаются одинаково, но в какой-то момент разные. Я хочу найти, сколько персонажей объединяет две строки.
Кажется, что strpos
противоположна этому; он предполагает, что одна строка найдена полностью в другой, но не обязательно при стартовом смещении.
Я вижу много вопросов, которые задают вопрос о поиске общих подстрок, когда они не в начале, или когда есть более двух строк, и это, похоже, усложняет ситуацию совсем немного. У меня всего две строки, и у них общий префикс. Есть ли функция PHP для получения индекса, в котором эти две строки отличаются?
Вы можете попробовать использовать цикл 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 />';
Подобный вопрос ответил здесь: найдите первый символ, который отличается между двумя строками
Вы можете использовать встроенную функцию PHP similar_text(), однако, как указано ниже, это не получает индекс, а только счетчик числа одинаковых символов.
for
?