逃避只有特殊的特殊字符

时间:2014-08-11 07:04:49

标签: php zend-framework2 zend-search-lucene

我正在使用QueryParser::parse()方法从ZendSearch Lucene索引的字符串搜索词中获取查询。但是我对以下查询有疑问:

+php +5.7.1)

这会抛出QueryParserException消息:

  

语法错误:括号不匹配,每个开口都必须关闭。

所以我在将QueryParser::escape()传递给QueryParser::parse()之前使用\\+\\p\\h\\p\\ \\+\\5\\.\\7\\.\\1\\) 来转义字符串搜索字词,但之后它会逃避所有内容,因此会导致此字符串:

QueryParserException

现在+已经消失,但也有可能使用-QueryParserException等特殊字符。

我寻找一种方法来逃避导致)的特殊字符,因此在我的情况下,)应该被转义,因为查询中没有左括号+但我的两个QueryParser::suppressQueryParsingExceptions()应该保持不变。

是否有可能实现这一目标?不进行解析而构建查询本身不是一种选择,因为搜索项是用户输入。

我尝试使用QueryParser这可能是我正在寻找的东西,但它没有效果。 QueryParserException仍会引发true,但默认值为{{1}}。

1 个答案:

答案 0 :(得分:0)

您可以使用addcslashes

$escapedParenthesis = addcslashes('+php +5.7.1)','\\)');