У меня есть код, который работает лишь частично; он найдет только «единственную» строку из заданной другой строки в поиске. т.е.; текст в строке «красный, зеленый, синий», я пытаюсь «сравнить»? или "совпадение"? это с небольшим файлом, в котором есть только отдельные слова..
Проблема в том, что если я наберу одно слово, которое «соответствует» одному в файле, все в порядке.
Я хотел бы, чтобы вся «фраза» в строке соответствовала любому месту, где находится слово. Например, если я наберу «красный, зеленый, синий».., он найдет «зеленый», который указан в текстовом файле $, тогда как «красный» и «синий» нет.
Как бы то ни было, если я набираю «зеленый».., он работает нормально. если я наберу «красный зеленый синий», он ничего не «найдет».
Я пытался, пытался; функции 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)
{
[\s,]+
по-прежнему требует хотя бы один символ из этого класса, которого не существует перед словом, если это самое начало строки. Если все фразы, которые вам нужно найти, являются реальными словами, использование границ слов может иметь больше смысла. - person CBroe   schedule 28.05.2020