我正在尝试从正文中找到所有独特的整个单词。目前这是我正在使用的,但它似乎没有工作:
$textDump = "cat dog monkey cat snake horse"
$wholeWord = "/[\w]*/";
$uniqueWords = (preg_match($wholeWord, $textDump, $matches));
任何帮助,将不胜感激。谢谢!
array_unique(
str_word_count($textDump,1)
);
您可以使用 str_word_count
$textDump = "cat dog monkey cat snake horse";
$uniqueWords = (str_word_count($textDump, 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
在这种情况下,为什么不使用explode();
and来实现这array_unique();
一点?
$text = "cat dog monkey cat snake horse";
$foo = explode(" ", $text);
print_r(array_unique($foo));