1 php regex filter explode keyword
我正在用PHP构建一个过滤系统.我需要优先考虑基于关键字匹配的文本.过滤器必须识别不同类型的关键字.
其中一种类型是普通词keyword1 keyword2
.这将过滤带有'keyword1'和'keyword2'的文本,无论它们是否在文本中连续出现的顺序如何.
另一种类型是单词的精确组合"keyword1 keyword2"
.这将优先考虑具有确切组合"keyword1 keyword2"的文章.
还有其他类型,但它们在这里不相关.
关键字类型可以合并,因此keyword1 "keyword2 keyword3"
有效并且会搜索包含"keyword1"和确切组合"keyword2 keyword3"的文章.
对于第一种类型,我可以使用an explode(' ', $keywords)
来获取数组中的关键字.但是,这会搞砸keyword1 "keyword2 keyword3"
,因为引号中的文本也会分开.
所以我需要一个分隔关键字的函数,但不会用引号分隔文本.有功能可以做到吗?如果没有,是一个正则表达式的方式去?
你可以使用正则表达式:
$string = 'test1 test2 "test3 test4"';
preg_match_all('/\"[\s\S]+\")|([\S]+)/ism', $string, $matches);
print_r($matches);
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试使用str_getcsv()