我试图从文本正文中找到所有独特的整个单词。目前这是我正在使用但它似乎没有工作:
$textDump = "cat dog monkey cat snake horse"
$wholeWord = "/[\w]*/";
$uniqueWords = (preg_match($wholeWord, $textDump, $matches));
任何帮助将不胜感激。谢谢!
答案 0 :(得分:6)
array_unique(
str_word_count($textDump,1)
);
答案 1 :(得分:2)
您可以使用str_word_count
$textDump = "cat dog monkey cat snake horse";
$uniqueWords = (str_word_count($textDump, 1);
答案 2 :(得分:1)
在这种情况下,为什么不使用explode();
和array_unique();
来实现这一目标?
$text = "cat dog monkey cat snake horse";
$foo = explode(" ", $text);
print_r(array_unique($foo));
答案 3 :(得分:1)
到目前为止给出的答案都假设,“找到所有独特的整个单词”,你的意思是“删除重复”。实际上你的问题不是很明确,因为你没有在你的例子中指明你想要的输出,但是我会接受你的话并为“找到所有独特的整个单词”提供解决方案。
这意味着,对于输入:
"cat dog monkey cat snake horse"
您将获得输出:
"dog monkey snake horse"
实际上,str_word_count
对此也有用,与array_count_values
一起实际上计算不同的值:
$wordCount = array_count_values(str_word_count($textDump,1));
$wordCount
现在是:
array(5) {
["cat"] => int(2)
["dog"] => int(1)
["monkey"] => int(1)
["snake"] => int(1)
["horse"] => int(1)
}
接下来,删除单词数大于1的单词(注意,实际单词是数组键,因此我们使用array_keys
来获取它们:
$uniqueWords = array_keys(
array_filter(
$wordCount,
function($count) {
return $count === 1;
}
)
);
$uniqueWords
现在是:
array(4) {
[0] => string(3) "dog"
[1] => string(6) "monkey"
[2] => string(5) "snake"
[3] => string(5) "horse"
}
完整代码:
$textDump = "cat dog monkey cat snake horse";
$wordCount = array_count_values(str_word_count($textDump,1));
$uniqueWords = array_keys(
array_filter(
$wordCount,
function($count) {
return $count === 1;
}
)
);
echo join(' ', $uniqueWords);
//dog monkey snake horse