タイトルは、2つの文字列の間で最も長い共通部分文字列を取得する必要があると言います。問題は、複数の共通部品がある場合はALLの共通部分も印刷する必要があることです。例:2つの文字列間の共通部分をすべて印刷します。
$ string1の= "MATCH1 asjdndrey MATCH2 asbafbae"。
$ string2の= "12412342gt MATCH1 hgm1g5m MATCH2"。
必要な出力:MATCH1、MATCH2
これは私が使用しているコードですが、私は最長共通部分文字列を取得するために管理が、一つだけ。それと
<?php
function getLongestMatchingSubstring($str1, $str2)
{
$len_1 = strlen($str1);
$longest = '';
for($i = 0; $i < $len_1; $i++){
for($j = $len_1 - $i; $j > 0; $j--){
$sub = substr($str1, $i, $j);
if (strpos($str2, $sub) !== false && strlen($sub) > strlen($longest)){
$longest = $sub;
break;
}
}
}
return $longest;
}
$string1 = 'asbafbaeMATCH1asjdndreyMATCH2';
$string2 = '12412342gtMATCH1hgm1g5mMATCH2';
echo getLongestMatchingSubstring($string1, $string2);
?>
私は出力としてMATCH1を取得します。たぶん、私が書いているコードは、具体的には最長のコードです。誰かが私に
マッチの配列を保持します。一致するものが見つかったら、配列の要素と同じ長さか長いかを確認します。それより長い場合は、配列を空にして新しいマッチを追加します。同じ長さの場合は、新しいマッチを追加するだけです。 – Barmar