Найдите совпадающие слова (две строки)

  • Автор темы bobivan
  • 23
  • Обновлено
  • 13, May 2024
  • #1
У меня есть файл $datafile['spamwords'] со спам-словами/фразами: играть в азартные игры ххх мамаша порно фильмы для взрослых центральный деловой район магазины и т. д... Я хочу сравнить файл спама с другим файлом: $text. Я нашел этот код, но он на самом деле не выполняет свою работу.

Я не понимаю, почему там есть эта часть $a1=взорваться(' ',$str1); $a2=взорваться(' ',$str2); Код находит некоторые спам-слова в строке $text ($str2), но не все, что странно.

 

$spamwords = file_get_contents($datafile['spamwords']);

$text = "Some text that has spam words in it. Can be whatever text.";

$str1=$spamwords;

$str2=strtolower($text);

$a1=explode(' ',$str1);

$a2=explode(' ',$str2);

function longenough($word){

return strlen( $word ) > 3;

}

$a1=array_filter($a1,'longenough');

$a2=array_filter($a2,'longenough');

$common=array_intersect( $a1, $a2 );

foreach( $common as $word ){

$str2=preg_replace( "/($word)/i",'<span style="color:red;font-weight:bold;">$1</span>', $str2 );

}

echo $str2;

Код (разметка): Спасибо.

bobivan


Рег
18 May, 2015

Тем
1

Постов
3

Баллов
13
  • 21, May 2024
  • #2
Я только что запустил его с этим, и единственная проблема, с которой я столкнулся, заключалась в том, что $spamwords Маценат вместо мецената. Можете ли вы опубликовать пример того, где это не удается. Отправьте конвой, если это NSFW.
 $spamwords = "maecenas vestibulum lorem malesuada";

$text = "Phasellus condimentum pretium lorem, ut suscipit felis.

Quisque nulla nibh, tempor ac erat vitae, luctus iaculis ligula.

Duis eu dapibus odio.

Interdum et malesuada fames ac ante ipsum primis in faucibus.

In quis maximus odio.

Suspendisse potenti.

Maecenas viverra auctor velit nec tempor.

Cras non sodales augue.

Proin rutrum faucibus ante, malesuada rutrum lectus tincidunt quis.

Duis lorem dui, vehicula nec magna vitae, hendrerit ornare eros.

Nullam ac leo lobortis, posuere mi ut, iaculis massa.

Ut vestibulum mi nec sapien vulputate rhoncus.

Sed dignissim consequat justo, quis faucibus metus eleifend vel.

Phasellus non mi sem.

Donec imperdiet tellus massa, vitae sagittis ex vestibulum blandit.";
PHP: Недавно был в игровом чате, и у них был фильтр нецензурной лексики, который не допускал слов «винт», «винт», «скреб». Я был впечатлен!
 

Taros


Рег
31 Dec, 2015

Тем
0

Постов
1

Баллов
1
  • 04, Jun 2024
  • #3
В вашем файле спам-слов вы используете клавишу «ENTER» в качестве разделителя слов, а в двух строках ниже в качестве разделителя слов используется «пробел».

$a1=взорваться(' ',$str1);

$a2=взорваться(' ',$str2);

Вы можете создать файл спама следующим образом:

файл.txt=

слово1 слово2 слово3 слово4 и т. д. и т. п.

вместо:

слово1

слово2

слово3

и т. д.

и т. д.
 

anya_fedorova


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 09, Jun 2024
  • #4
В конечном итоге вы получите сотни спам-слов. Было бы довольно сложно поддерживать их всех на одной линии, не так ли? Кстати, я бы поместил их в базу данных.
 

Pinhost


Рег
12 Nov, 2014

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно