【发布时间】:2010-09-28 09:45:53
【问题描述】:
使用 PHP,我正在尝试通过支持类似 Google 的运算符来改进我网站上的搜索,例如
- 关键字 = 自然/默认
- “关键字”或“搜索词组”= 完全匹配
- 关键字* = 部分匹配
为此,我需要将字符串拆分为两个数组。一个用于准确的单词(但没有双引号)放入 $Array1() 并将其他所有内容(自然和部分关键字)放入 Array2()。
什么正则表达式可以为以下字符串实现这一点?
示例字符串($string)
今天我正在“尝试”一个*“谷歌搜索”“测试”
想要的结果
$Array1 = array(
[0]=>trying
[1]=>google search
[2]=>testing
);
$Array2 = array(
[0]=>today
[1]=>i'm
[2]=>out
[3]=>a*
);
1) 精确 我已经尝试了以下精确的正则表达式,但它返回两个数组,一个带双引号,一个不带双引号。我可以只使用 $result[1] 但这里可能缺少一个技巧。
preg_match_all(
'/"([^"]+)"/iu',
'today i\'m "trying" \'out\' a* "google search" "test"',
$result
);
2) 自然/部分 以下规则返回正确的关键字,但带有几个空白值。这个正则表达式规则可能很草率,还是我应该通过 array_filter() 运行数组?
preg_split(
'/"([^"]+)"|(\s)/iu',
'today i\'m "trying" \'out\' a* "google search" "test"'
);
【问题讨论】: