我目前正在开发一个带有搜索引擎的PHP项目,该项目要求我将搜索查询细分为一系列子字符串。
我想支持" doublequoting"以便用户能够搜索确切的结果,例如"超级秘密的东西"只有在其名称中包含完全字符串的结果,而没有引号的相同字符串返回" super"或者"秘密"或"东西"。
这些引用应该是可以逃脱的
我举个例子:
keyword Monday "Larrys \"House\"" epic
应返回
数组[keyword, Monday, Larrys "House", epic]
如果这不太难实现,我也想支持转义反斜杠。 \\"
仍然算作引用,而\\\"
则没有,依此类推。
感谢任何帮助!
答案 0 :(得分:4)
没有必要使用正则表达式,因为php提供了非常好的CSV解析例程。使用str_getcsv
:
$input = 'keyword Monday "Larrys \"House\"" epic';
$arr = str_getcsv($input, " ");
// remove \\ from array
$arr = array_map(function($elem) { return str_replace ( '\\\\', '\\', str_replace ( '\\"', '"', $elem ) );}, $arr);
// print resulting array
print_r($arr);
<强>输出:强>
Array
(
[0] => keyword
[1] => Monday
[2] => Larrys "House"
[3] => epic
)