スパムを止めようとしていますが、その多くは単語の繰り返しです。文字列をチェックして、文字列内に繰り返しフレーズがあるかどうかを確認する方法はありますか?
$string = 'Hello ! Hello ! Hello ! Hello !";
ありがとう、
substr_count
探しているものがわかっている場合は問題ありません。スパム ワードがわからない場合は、str_word_count
andを使用でき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」など) も確認する必要があります。
Google 検索をすばやく実行すると、次のことがわかりました。
http://php.net/manual/en/function.substr-count.php
ただし、より優れたスパム対策のアイデアがあります。キャプチャのように。人間のスパマーを捕まえるのは非常に困難です。彼らはあなたの単語カウンターを回避する方法を見つけます。Youtube のように、ユーザーベースのスパム レポートのアプローチを検討する必要があるかもしれません。
substr_count() を試すことができます: http://php.net/manual/en/function.substr-count.php
$string = 'hello ! hello ! hello ! hello !';
echo substr_count($string, 'hello');
もちろん、文字列内のいずれかの単語が複数回出現するかどうかを確認したい場合は、効率が大幅に低下します。おそらく、「チェックされた単語」のリストを追跡し、文字列内のまだチェックされていない単語ごとに、それが複数回発生するかどうかを確認する必要があります。
Binarious が述べたように、キャプチャはスパムを阻止するためのより良い方法です ;-)