在数组中查找类似的字符串

时间:2011-10-31 10:49:28

标签: php

假设我们有一个这个

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

我们如何在该数组中找到类似的事件?在这种情况下,它将是'等等'。谢谢!

1 个答案:

答案 0 :(得分: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