0
讓說,我們得到的這個找到字符串的相似一次出現在陣列
$t = array('red - blah blah', 'yellow @ blah blah', 'blue > blah blah');
數組我們如何找到該數組中出現類似的情況?在這種情況下,這將是'等等'。謝謝!
讓說,我們得到的這個找到字符串的相似一次出現在陣列
$t = array('red - blah blah', 'yellow @ blah blah', 'blue > blah blah');
數組我們如何找到該數組中出現類似的情況?在這種情況下,這將是'等等'。謝謝!
爲了簡單的解決方案,您可以嘗試迭代第一個字符串(從最長的字符串開始)的可能子串,然後在其他字符串中搜索;如果找到,這是你的結果。儘管如此,這種方法將會非常耗費處理器。
$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
所以如果你有:「紅色 - 嗒嗒blah2」 - 這將是多麼'blah'或'嗒嗒blah'(沒有2)? –