Сначала вам нужно определить, что означает слово в этом контексте. Например, " блин " одно слово или два? Если вы ищете " pan ", должно ли оно возвращать значение true, если найдено " pancake "? Кроме того, " AI " слово? " 2020 " - это слово? А как насчет " fast-track "? Должен ли поиск быть чувствительным к регистру? Должен ли он включать частичные находки? Если вам нужен простой поиск по иголке / стогу сена, например strpos
, решение тривиально.
$searchWords = ["yo","hi"];
$sentence = "yo you your";
$wordsFound = [];
foreach ($searchWords as $word) {
if (stripos($sentence, $word) !== false) {
$wordsFound[$word] = true;
}
}
echo "Words found: ", implode(",", array_keys($wordsFound)); // Words found: yo
Чтобы найти слова, которые не были найдены в $searchWords
, достаточно просто сделать $wordsNotFound = array_diff($searchWords, array_keys($wordsFound))
.