在我的HTML頁面中,用戶輸入搜索查詢並通過GET
發送。在我的一些mongodb文檔中,有些字段的值爲'
。但是,當用戶輸入包含'
的查詢時,不會返回任何結果。我也用PHP addslash
函數沒有成功。我應該如何將查詢放在find
函數中?MongoDB文檔中的單個文件
$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];
在我的HTML頁面中,用戶輸入搜索查詢並通過GET
發送。在我的一些mongodb文檔中,有些字段的值爲'
。但是,當用戶輸入包含'
的查詢時,不會返回任何結果。我也用PHP addslash
函數沒有成功。我應該如何將查詢放在find
函數中?MongoDB文檔中的單個文件
$col->find(['word' => new MongoRegex('/^' . addslashes($term) . '/i')];
嘗試使用htmlentities
代替addslashes
$col->find(['word' => new MongoRegex('/^' . htmlentities($term, ENT_QUOTES, 'UTF-8') . '/i')];
的JS外殼似乎需要'
轉義爲Unicode \x27
(參見:this answer)但PHP驅動程序不應該要求ny特殊待遇。請看下面的例子:
$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));
此查詢僅第一個文檔,其中x
是foo'bar
匹配。如果你運行腳本,你應該看到打印出來的文檔。
http://stackoverflow.com/questions/17335746/apostrophe-like-and-equal-clause-not-working –
@DipeshParmar我的DBMS是noSQL。 – PHPst