【发布时间】:2016-02-24 00:51:21
【问题描述】:
我想创建一个函数,通过在 PHP 中的字符前添加 \ 来转义 elasticsearch 特殊字符。 Elasticsearch 使用的特殊字符是: + - = && || >
我对正则表达式不是很熟悉,但我发现了一段代码可以简单地删除特殊字符,但我更喜欢转义它们,因为这可能是相关的。我使用的代码:
$s_input = 'The next chars should be escaped: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ / Did it work?';
$search_query = preg_replace('/(\+|\-|\=|\&|\||\!|\(|\)|\{|\}|\[|\]|\^|\"|\~|\*|\<|\>|\?|\:|\\\\)/', '', $s_input);
这个输出:
The next chars should be escaped / Did it work
所以有两个问题:这段代码删除了特殊字符,而我想用\ 转义它们。此外:此代码不会转义 \。有谁知道如何逃避 Elasticsearch 特殊字符?
【问题讨论】:
-
我建议您阅读
preg_replace()的用途。我在上面的代码中只看到一个空字符串作为替换参数。 -
是的,但是当我在替换字符串中放置 \ 或双 \\ 时,它仍然不起作用。抱歉,我应该在我的问题中提到这一点。
标签: php regex elasticsearch