Попытка получить несколько слов из строки и поиск в текстовом файле любых совпадений в PHP

У меня есть код, который работает лишь частично; он найдет только «единственную» строку из заданной другой строки в поиске. т.е.; текст в строке «красный, зеленый, синий», я пытаюсь «сравнить»? или "совпадение"? это с небольшим файлом, в котором есть только отдельные слова..

Проблема в том, что если я наберу одно слово, которое «соответствует» одному в файле, все в порядке.

Я хотел бы, чтобы вся «фраза» в строке соответствовала любому месту, где находится слово. Например, если я наберу «красный, зеленый, синий».., он найдет «зеленый», который указан в текстовом файле $, тогда как «красный» и «синий» нет.

Как бы то ни было, если я набираю «зеленый».., он работает нормально. если я наберу «красный зеленый синий», он ничего не «найдет».

Я пытался, пытался; функции stristr, взрыв строки и т. д.

Вот что у меня есть:

$search=$input; //example as above "red green blue" would be the $input
$lines = file($textfile); //this is the File that contains 20 single words, 
                     //"green" is one of them, "red" and "blue" *are not*.
foreach($lines as $line)
{
// Check if the line contains the string in $input
if(stristr($line, $search) !== false)
$answer=$line;
}
if(!$found)
{

после этого я хотел бы, чтобы результат ответа $ был «зеленым». Это не проблема, ЕСЛИ String не находится в других «текстах» ввода $. (упомянул)

Спасибо за любую помощь.

Я сделал это редактирование, чтобы «разделить» ввод ... он все еще не работает, как я надеюсь. В основном это работает так же. Любые дальнейшие предложения?

 $search=$input; 

 foreach(preg_split("/((\r?\n)|(\r\n?))/", $input) as $inputs) 

 $lines = file($textfile); 
 foreach($lines as $line) { 
 if(stristr($line, $inputs) !== false) 
 $answer=$inputs; 
 } 
 if(!$found) 
 {

person GX1705    schedule 25.05.2020    source источник
comment
Итак, разделите вводимый текст поиска на отдельные слова и зацикливайтесь на них…?   -  person CBroe    schedule 25.05.2020
comment
Я попробую, когда найду метод. благодаря.   -  person GX1705    schedule 25.05.2020
comment
не очень повезло ... возможно, я нашел какой-то пример, но я не знаю, как их реализовать ... я понимаю, что вы говорите, хотя это имеет смысл. Я пытаюсь использовать самый распространенный метод с 'for($i =1; $i++)'? не уверен, что у меня есть даже это право. может быть, кто-то может объяснить или указать направление/средства для достижения этого как-то. я также пытался preg_split, с неудачными результатами. спасибо за любую помощь.   -  person GX1705    schedule 25.05.2020
comment
Это плохо читается в комментариях. Пожалуйста, отредактируйте свой вопрос и добавьте его в конец в правильном формате.   -  person CBroe    schedule 27.05.2020
comment
Извини за это. Я обновил пост. @CBroe   -  person GX1705    schedule 28.05.2020
comment
Я думаю, что preg_split, который я перечислил, используя /((\r?\n)|(\r\n?))/ неверен. ввод находится во фразе, а не в виде списка (в основном не будет перевода строки или возврата каретки).. как в комментарии.. между входными словами будут пробелы.. Спасибо.   -  person GX1705    schedule 28.05.2020
comment
РЕДАКТИРОВАТЬ: теперь я смог использовать это для работы (почти) /[\s,]+/ .. он обнаружит «входной текст», который я ищу, * но только если он либо один, либо в самом конец строки 'inputtext'.. мне нужно, чтобы он был обнаружен в любой части входной текстовой строки.. если бы вы могли предложить лучший preg_match, я был бы очень признателен   -  person GX1705    schedule 28.05.2020
comment
[\s,]+ по-прежнему требует хотя бы один символ из этого класса, которого не существует перед словом, если это самое начало строки. Если все фразы, которые вам нужно найти, являются реальными словами, использование границ слов может иметь больше смысла.   -  person CBroe    schedule 28.05.2020