Preg_match_all 与多个单词完全匹配

Preg_match_all exact match with multiple words

我有一长串关键字,下面用变量 $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>";
 }

Results: Shop Supervisor

如何获得 $text 的精确匹配?所以在这种情况下不应该有任何结果,因为 Machine Shop Supervisor 不在关键字列表中。

谢谢。

你应该使用anchors, not word boundaries,所以它是一个完整的字符串匹配。

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

一个space是一个非单词字符所以匹配。

https://3v4l.org/OYlfD