1

スパムを止めようとしていますが、その多くは単語の繰り返しです。文字列をチェックして、文字列内に繰り返しフレーズがあるかどうかを確認する方法はありますか?

$string = 'Hello ! Hello ! Hello ! Hello !";

ありがとう、

4

3 に答える 3

3

substr_count探しているものがわかっている場合は問題ありません。スパム ワードがわからない場合は、str_word_countandを使用できarray_count_valuesます。

$string = 'Hello! Hello! Hello! Hello! Lorem Ipsum';
$words = str_word_count($string, 1);
$count = array_count_values($words);
print_r($count);

これにより、次のようになります。

Array
(
    [Hello] => 4
    [Lorem] => 1
    [Ipsum] => 1
)

sort()この配列を使用して、文字列で最も使用されている単語のランキングを取得できます。また、ストップワード (「and」、「or」、「me」など) も確認する必要があります。

于 2012-04-23T13:22:28.003 に答える
1

Google 検索をすばやく実行すると、次のことがわかりました。

http://php.net/manual/en/function.substr-count.php

ただし、より優れたスパム対策のアイデアがあります。キャプチャのように。人間のスパマーを捕まえるのは非常に困難です。彼らはあなたの単語カウンターを回避する方法を見つけます。Youtube のように、ユーザーベースのスパム レポートのアプローチを検討する必要があるかもしれません。

于 2012-04-23T13:16:52.160 に答える
0

substr_count() を試すことができます: http://php.net/manual/en/function.substr-count.php

$string = 'hello ! hello ! hello ! hello !';
echo substr_count($string, 'hello');

もちろん、文字列内のいずれかの単語が複数回出現するかどうかを確認したい場合は、効率が大幅に低下します。おそらく、「チェックされた単語」のリストを追跡し、文字列内のまだチェックされていない単語ごとに、それが複数回発生するかどうかを確認する必要があります。

Binarious が述べたように、キャプチャはスパムを阻止するためのより良い方法です ;-)

于 2012-04-23T13:16:29.817 に答える