我正在用 PHP 构建一个过滤器系统。我需要根据关键字匹配优先考虑文本。过滤器必须识别不同类型的关键字。
其中一种类型是普通单词,keyword1 keyword2
. 这将过滤带有“keyword1”和“keyword2”的文本,无论它们在文本中是否连续出现的顺序如何。
另一种类型是单词的精确组合,"keyword1 keyword2"
. 这将优先考虑具有精确组合“keyword1keyword2”的文章。
还有其他类型,但它们在这里不相关。
关键字类型可以组合,因此keyword1 "keyword2 keyword3"
是有效的,并且会搜索具有“keyword1”和精确组合“keyword2 keyword3”的文章。
对于第一种类型,我可以使用 anexplode(' ', $keywords)
来获取数组中的关键字。但是,这会弄乱keyword1 "keyword2 keyword3"
,因为引号中的文本也会分开。
所以我需要一个函数来分隔关键字,但不分隔引号中的文本。有没有可以做到这一点的功能?如果不是,那么正则表达式是否可行?