MongoDB文档中的单个qute


Single qoute in MongoDB document

在我的HTML页面中,用户输入一个搜索查询并通过GET发送。在我的一些mongodb文档中,有些字段的值中包含'。但当用户输入包含'的查询时,不会返回任何结果。我还使用了PHP addslash函数,但没有成功。我应该如何在find函数中放置查询?

$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];

我在两天前遇到了同样的问题,我已经使用下面的查询解决了它。

下面是我的解决方案。

SELECT *
FROM tags
WHERE `name` = 'limit''''s'
LIMIT 0 , 30

SEE HERE

尝试使用htmlentities而不是addslashes

$col->find(['word' => new MongoRegex('/^' . htmlentities($term, ENT_QUOTES, 'UTF-8') . '/i')];

引用:mongodb 中单引号的正则表达式

JS shell似乎要求将'转义为unicode 'x27(请参阅:此答案),但PHP驱动程序不需要任何特殊处理。考虑以下示例:

$m = new MongoClient();
$c = $m->test->foo;
$c->drop();
$c->insert(['x'=>"foo'bar"]);
$c->insert(['x'=>"foobar"]);
$r = $c->find(['x' => new MongoRegex("/^foo'/i")]);
var_dump(iterator_to_array($r));

此查询仅匹配第一个文档,其中xfoo'bar。如果运行脚本,您应该会看到打印出来的文档。