1

私はテキストの本文からすべてのユニークな単語全体を見つけようとしています。現在これは私が使用しているものですが、機能していないようです:

$textDump = "cat dog monkey cat snake horse"
$wholeWord = "/[\w]*/";
$uniqueWords = (preg_match($wholeWord, $textDump, $matches));

どんな助けでもいただければ幸いです。ありがとう!

4

4 に答える 4

6
array_unique(
    str_word_count($textDump,1)
);
于 2013-02-11T17:56:07.920 に答える
2

str_word_count を使用できます

$textDump = "cat dog monkey cat snake horse";
$uniqueWords = (str_word_count($textDump, 1);
于 2013-02-11T17:56:10.073 に答える
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
于 2013-02-11T18:23:42.077 に答える
1

explode();この場合、 andを使用してこれを達成してみませんarray_unique();か?

$text = "cat dog monkey cat snake horse";

$foo = explode(" ", $text);
print_r(array_unique($foo)); 
于 2013-02-11T17:57:31.277 に答える