我有一个包含几千个值的简单非关联数组。
这些值是 1-10 个单词的字符串。
我需要找到数组中“命中”最多的 3-4 个连续单词字符串。
这是字母数字和不区分大小写的。
一个打击可能是:
字符串的任何单个单词都出现在数组的一个项目中。任何一组多个连续单词都出现在数组的一个项目中。
所以,举个例子:
$database = array(
0 => 'the dogs whisperer',
1 => 'I am a whisperer',
2 => 'dogs are often hairy',
3 => 'dogs',
4 => 'are you a dogs whisperer'
5 => 'dogs can be manipulated by a whisperer');
三个单词字符串“the dogsspokeer”将获得以下点击:
“狗语者”中的“狗语者”
“狗语者”中的“狗语者”
“狗语者”中的“狗”
“狗语者”中的“the”
“狗语者”中的“狗”
“狗耳语者”中的“耳语者”
“我是耳语者”中的“耳语者”
“狗常多毛”中的“狗”
“狗”中的“狗”
“你是狗语者吗”中的“狗语者”
“你是狗语者吗”中的“狗”
“你是狗耳语者吗”中的“耳语者”
“狗可以被低语者操纵”中的“狗”
“耳语者可以操纵狗”中的“耳语者”
为了使多字串获得成功,这些字必须是连续的。即“狗耳语者”不是“狗可以被耳语者操纵”的热门歌曲。
单词也必须有条理。即“狗耳语者”在“耳语者狗”的价值中不受欢迎。
我很好地掌握了不同的数组函数,但我无法将它们全部放在一起。我尝试通过按单词爆炸并重新组合来提取所有可能的字符串集,然后使用 strpos!==FALSE 来查找命中。我最终得到了一个庞大的矩阵,我无法从中获得所需的输出。