Выводить только строки с повторяющимися словами

Я пытаюсь взять список строк, и PHP выводит только те строки, которые содержат одно и то же слово (переменную) дважды. Оно должно соответствовать как единственному, так и множественному числу слова.

Пример списка строк:

Это лучший сайт из всех сайтов там

Это большой веб-сайт

Вот сайт, который я нашел при поиске сайтов

Сайт это крутое новое слово

Я бы поместил эти строки в текстовое поле, и скрипт вывел бы:

Это лучший сайт из всех сайтов там

Вот сайт, который я нашел при поиске сайтов


Нет необходимости отображать какие-либо значения, только необработанные строки, которые включают слово дважды.

Я довольно неплохо умею манипулировать строками, но я везде искал ответ на этот вопрос, кажется, его не существует.

-3

Решение

Для целей теста я не использовал что-то вроде $text = $_POST['text'];, вместо этого я использовал переменную для хранения текста, также класс, который я использую для множественного числа слов происходит из Вот.

Замечания: Я откатил ответ, чтобы точно ответить на вопрос, предыдущий ответ, который пытался ответить на комментарии, был перемещен Вот.

<?php

$text = "This is a best website of all the websites out there
This is a great website
Here is a website I found while looking for websites
Website is a cool new word';
// helps us pluralize all words, so we can check the duplicates
include('class.php');

// loop into each line one by one
foreach(explode("\n", $text) as $line)
{
// remove special characters
$tline = preg_replace('/[^A-Za-z0-9\-\s]/', '', $line);

// create a list of words from current line
$words_list = preg_split('/\s+/', strtolower($tline));

// convert all singular words to plural
foreach($words_list as $word)
{
$w[] = Inflect::pluralize($word);
}

// if the count of words in this line was bigger that of unique
// words then we got some duplicates, echo this line out
if( count($w) > count(array_unique($w)) )
echo $line . '</br>';

// empty the array for next line
$w = [];
}

Выход для желаемого текста будет:

This is a best website of all the websites out there
Here is a website I found while looking for websites

Однако правильность кода действительно зависит от того, как работает наш метод множественного числа.


Как это работает

Сначала я зацикливаюсь на каждой строке по очереди, на каждой итерации я делаю список слов из этой строки, затем мы должны преобразовать все одиночные слова во множественное число (или во множественное число в единственное число, это на самом деле не имеет значения) Теперь у меня есть список слов, которые все являются множественными, и я могу легко проверить их, чтобы увидеть, являются ли все они уникальными или нет, если число слов в этой строке больше, чем уникальных слов, то я Я могу узнать, что там есть повторяющиеся слова, поэтому я должен напечатать эту строку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]