2011-10-31 19 views
0

は、我々はその配列の類似の出現を見つけるにはどうすればよいこの配列内の文字列の類似したのoccuranceを見つける

$t = array('red - blah blah', 'yellow @ blah blah', 'blue > blah blah'); 

の配列を持って言うことができますか?この場合、それは 'まあまあ'です。ありがとう!

+5

をあなたは持っているので、場合:「赤 - 何とかblah2」 - それはちょうど 'blah'または'何とかblah'になります( 2なし)? –

答えて

3

簡単な解決法として、最初の文字列の可能な部分文字列(最長文字列から始まる部分文字列)を繰り返し処理してから、それを他の文字列で検索することができます。見つかった場合、これがあなたの結果です。しかし、このアプローチはかなりプロセッサを消費します。

$firstString = $t[0]; 
for ($len = strlen($firstString); $len > 0; $len--) { 
    for ($start = 0; $start + $len <= strlen($firstString); $start++) { 
     $possibleCommonSubstring = substr($firstString, $start, $len); 
     for ($idx = 1; $idx < count($t); $idx++) { 
      if (!strpos($t[$idx], $possibleCommonSubstring)) { 
       continue 2; 
      } 
     } 
     return $possibleCommonSubstring; 
    } 
} 

より一般的な議論、そしてより効率的なソリューションは、ここで見つけることができます:http://en.wikipedia.org/wiki/Longest_common_substring_problem

関連する問題