Preg_match_all точное совпадение с несколькими словами

У меня есть длинный список ключевых слов, представленных ниже с переменной $skills который содержит Shop Supervisor но нет Machine Shop Supervisor:

$text = "Machine Shop Supervisor";
preg_match_all("~\b$skills\b~i", $text, $matchWords);
foreach ($matchWords[0] as $matchWord) {
     echo "<b>MatchWord:</b> " . $matchWord.  "<br>";
 }

Результаты: Руководитель магазина

Как я могу получить точное соответствие $text? так что в этом случае не должно быть никаких результатов, как Machine Shop Supervisor нет в списке ключевых слов.

Благодарю.

1 ответ

Решение

Вы должны использовать якоря, а не границы слов, так что это полное совпадение строк.

preg_match_all("~^$skills$~i", $text, $matchWords);

Пробел не является символом слова, поэтому он соответствует.

https://3v4l.org/OYlfD

Другие вопросы по тегам