Многократное соответствие слова поиска с использованием strpos

Интересно, может ли кто-нибудь помочь с небольшой проблемой, которую я не могу решить - моя голова сейчас кружится кругами ...

Хорошо, у меня есть файл .txt с многочисленными строками информации - я пытаюсь сопоставить ключевые слова с этими строками и отобразить определенное количество совпадающих строк.

Я собрал этот фрагмент сценария и, пока он работает, он соответствует строке, только если слова находятся в том же порядке, что и слова для поиска.

На данный момент в качестве примера:

Поисковые слова:

Красная Шапка

Строки в .txt файле:

это моя красная шляпа
моя шляпа красная
эта шляпа зеленая
это красный шарф
твоя красная шляпа хороша

Поскольку скрипт на данный момент будет соответствовать и отображать строки 1, 5

Однако я бы хотел, чтобы он совпадал и отображал строки 1, 2, 5

Любой порядок, но все слова должны присутствовать, чтобы соответствовать.

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

Буду признателен за любую помощь, прежде чем я потеряю волосы, которые у меня остались :-)

Вот код, который у меня сейчас работает - переменная поиска уже установлена:

<?php
rawurldecode($search);
$search = preg_replace('/[^a-z0-9\s]|\n|\r/',' ',$search);
$search = strtolower($search);
$search = trim($search);

$lines = file('mytextfile.txt') or die("Can't open file");
shuffle($lines);

$counter = 0;

// Store true when the text is found
$found = false;

foreach($lines as $line)
 {

  if(strpos($line, $search) !== false AND $counter <= 4)
  {
    $found = true;
    $line = '<img src=""> <a href="">'.$line.'</a><br>';


    echo $line;
    $counter = $counter + 1;

  }

}

// If the text was not found, show a message
if(!$found)
{
  echo  $noresultsmessage;
}

?>

Заранее спасибо за любую помощь - все еще учусь :-)

Ответы на вопрос(1)

Ваш ответ на вопрос