首页 > 解决方案 > 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它不在关键字列表中。

谢谢。

标签: phpregexpreg-match-allword-boundary

解决方案


您应该使用anchors,而不是word boundary,所以它是一个完整的字符串匹配。

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

空格是非单词字符,因此它匹配。

https://3v4l.org/OYlfD


推荐阅读