我正在使用我在这个问题上找到的答案来允许我拥有搜索运算符。
它的一个问题是它要求 then 运算符和单词之间没有空格。
所以它会匹配operator:something
但不是operator: something
这样我想知道我如何匹配任何一种形式?
preg_match_all('/
(?:
([^: ]+) # command
: # trailing ":"
)
(
[^: ]+ # 1st word
(?:\s+[^: ]+\b(?!:))* # possible other words, starts with spaces, does not end with ":"
)
/x',
$search, $matches, PREG_SET_ORDER);
$result = array();
foreach($matches as $match) {
$result[$match[1]] = isset($result[$match[1]])
? $result[$match[1]] . ' ' . $match[2]
: $match[2];
}