【发布时间】:2020-03-28 09:53:11
【问题描述】:
例如,我有这几个关键字
$word = "word1,word2,word3";
并使用$keyword = explode(",", trim($word)); 减去/分解它
然后我会得到这些$keyword[0] $keyword[1] 和$keyword[2]
现在,如何使用 preg_match 匹配这些关键字?
$others = "this is example where there is word1";
if(preg_match('/($keyword[0]|$keyword[1]|$keyword[2])/i', $others)){
echo "matched";
}
问题是,如果只有2个单词,它将匹配$others中的所有单词。
还有更合适或更简单有效的方法吗?
【问题讨论】:
-
您需要从数组中初始化正则表达式吗?尝试
$rx = '/' . implode("|", array_map(function($i) { return preg_quote(trim($i), "/"); }, explode(",", $word))) . '/i';,然后使用preg_match($rx, $others),参见demo。在两端添加单词边界\b,以仅匹配整个单词。或者,更好的是,(?<!\w)开头,(?!\w)结尾。