Нужно осуществить поиск по строке формата:
$string = "Lorem ipsum dolor sit amet";
Человек вводит в поиск "sit ipsum amet". Можно ли проверить строку на наличие этих символов в строке, не в прямом порядке ?
В php есть стандартные методы для поиска по строке, например stristr(), но он сработает, только если в точном порядке дать ему данные, а мне нужно просто что-то, что найдёт совпадение в строке и запросе.
Как это можно реализовать?
Попробуй вот этот код. В основ используеться array_intersect()
$string = "Lorem ipsum dolor sit amet";
$haystack = "sit ipsum amet";
$stringInArray = explode(' ', $string);
$haystackInArray = explode(' ', $haystack);
if(count(array_intersect($haystackInArray, $stringInArray)) == count($haystackInArray)) {
// Слова из строки найдены
}
Основная идея - разбиваем обе строки (целевую и искомую)на слова. А затем циклом пробегаем по массиву искомых слов и ищем каждое слово в массиве целевых слов
function mixed_search($haystack, $needle) {
$haystack_words = explode(' ', $haystack);
$needle_words = explode(' ', $needle);
foreach ($needle_words as $word) {
if (array_search($word, $haystack_words) === false)
return false;
}
return true;
}
$string = "Lorem ipsum dolor sit amet";
$search = "sit ipsum amet";
echo mixed_search($string, $search);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники