Я пытаюсь взять список строк, и PHP выводит только те строки, которые содержат одно и то же слово (переменную) дважды. Оно должно соответствовать как единственному, так и множественному числу слова.
Пример списка строк:
Это лучший сайт из всех сайтов там
Это большой веб-сайт
Вот сайт, который я нашел при поиске сайтов
Сайт это крутое новое слово
Я бы поместил эти строки в текстовое поле, и скрипт вывел бы:
Это лучший сайт из всех сайтов там
Вот сайт, который я нашел при поиске сайтов
Нет необходимости отображать какие-либо значения, только необработанные строки, которые включают слово дважды.
Я довольно неплохо умею манипулировать строками, но я везде искал ответ на этот вопрос, кажется, его не существует.
Для целей теста я не использовал что-то вроде $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
Однако правильность кода действительно зависит от того, как работает наш метод множественного числа.
Сначала я зацикливаюсь на каждой строке по очереди, на каждой итерации я делаю список слов из этой строки, затем мы должны преобразовать все одиночные слова во множественное число (или во множественное число в единственное число, это на самом деле не имеет значения) Теперь у меня есть список слов, которые все являются множественными, и я могу легко проверить их, чтобы увидеть, являются ли все они уникальными или нет, если число слов в этой строке больше, чем уникальных слов, то я Я могу узнать, что там есть повторяющиеся слова, поэтому я должен напечатать эту строку.
Других решений пока нет …