polyanin
@polyanin
Golang, PHP & Symfony developer

Есть ли такая готовая функция в php?

есть 2 строки
9089102110
90856
в результате получается количество одинаковых символов с начала строки
в данном случае 3
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
$count = 0;
$len = min(mb_strlen($s1), mb_strlen($s2));
while (mb_substr($s1,$count,1) == mb_substr($s2,$count,1) && $count < $len)
    $count++;

$count - общее кол-во символов с начала строки, сама общая часть - mb_substr($s1, 0, $count)
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
miraage
@miraage
Не припоминаю таких.. Я бы реализовал так.
function same_chars($first, $second)
{
	$len = min(strlen($first), strlen($second));
	$matched = 0;
	
	for ($i = 0; $i < $len; ++$i) {
		if ($first[$i] === $second[$i]) {
			++$matched;
		} else {
			break;
		}
	}
	
	return $matched;
}

var_dump(same_chars('9089102110', '90856')); // 3
Ответ написан
prototype_denis
@prototype_denis
Symfony
strncmp — Бинарно-безопасное сравнение первых n символов строк


$i = 0;
while(($a !== $b) && !strncmp($a, $b, ++$i));
$i = (--$i < 0) ? 0 : $i;  // -1 || 0 => 0

echo $i;
Ответ написан
@denis_koronets
Я тоже вставлю свои 5 копеек :)
$str1 = '01234';
$str2 = '01233';

$counter = 0;
foreach (str_split($str1) as $key => $val) {
    if (substr($str2, $key, 1) == $val) {
        $counter++;
    } else {
        break;
    }
}

echo $counter;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы