正则表达式与括号不匹配

时间:2020-02-17 12:48:10

标签: php regex doctrine doctrine-odm

我正在使用Doctrine MongoDB,并且在查询生成器中具有以下代码:

$regexSeller = new Regex('^'.$search['seller'], 'i');
$raw->addOr($builder->matchExpr()->field('seller')->equals($regexSeller));

通过像这样的“鲍勃”搜索,它可以工作并找到好的结果,但是当带有“鲍勃(来自芝加哥)”这样的括号时,则不起作用。

我想问题出在第一行,但也找不到与括号匹配的方法。

1 个答案:

答案 0 :(得分:2)

您必须转义查询的特殊字符。例如。将(替换为\(,将)替换为\)

在PHP中,您可以使用preg_quotehttps://www.php.net/manual/en/function.preg-quote.php),如下所示:

$regexSeller = new Regex('^'.preg_quote($search['seller']), 'i');

让我知道它是否有效! ;)

谢谢!