substr_count
в порядке, если вы знаете, что ищете. Если вы не знаете, что такое спам слово, вы можете использовать str_word_count
и 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()
этот массив и получить ранжирование наиболее используемые слова в строке. Вы также должны проверить наличие паролей (например, «и», «или», «меня» и т. Д.).
А как насчет использования [akismet] (http://akismet.com/) вместо того, чтобы опрокинуть собственное решение для защиты от спама? Я написал спам-фильтр для общих текстов один раз, и его сложно фильтровать без ложных срабатываний. Akismet готов к использованию. –