我正在使用Doctrine MongoDB,并且在查询生成器中具有以下代码:
$regexSeller = new Regex('^'.$search['seller'], 'i');
$raw->addOr($builder->matchExpr()->field('seller')->equals($regexSeller));
通过像这样的“鲍勃”搜索,它可以工作并找到好的结果,但是当带有“鲍勃(来自芝加哥)”这样的括号时,则不起作用。
我想问题出在第一行,但也找不到与括号匹配的方法。
答案 0 :(得分:2)
您必须转义查询的特殊字符。例如。将(
替换为\(
,将)
替换为\)
。
在PHP中,您可以使用preg_quote
(https://www.php.net/manual/en/function.preg-quote.php),如下所示:
$regexSeller = new Regex('^'.preg_quote($search['seller']), 'i');
让我知道它是否有效! ;)
谢谢!