如何转义 Salesforce 搜索查询
How to escape Salesforce search query
我正在使用 Salesforce ruby gem 执行以下操作
@client.search("FIND {#{@email}}")
@email
returns 用户的电子邮件地址。在测试期间,我有一个像 test+test@example.com
这样的电子邮件地址,这导致了 MALFORMED_SEARCH 错误。我尝试在电子邮件中调用 to_json
,但这并没有解决问题。我应该在这里做什么逃跑?有没有通用的方法来做到这一点? (我想避免转义特定字符,例如“+”)
谢谢!
根据 SOSL specification,+ 是保留字符,必须用反斜杠转义。所有需要转义的字符都是? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -
要转义这些字符,您可以使用以下 gsub
:
"email+special@example.net".gsub(/(\?|&|\||\!|\{|\}|\[|\]|\(|\)|\^|\~|\*|\:|\|\"|\'|\+|\-)/){|special| "\" + special }
原回答:
我正在使用 Salesforce ruby gem 执行以下操作
@client.search("FIND {#{@email}}")
@email
returns 用户的电子邮件地址。在测试期间,我有一个像 test+test@example.com
这样的电子邮件地址,这导致了 MALFORMED_SEARCH 错误。我尝试在电子邮件中调用 to_json
,但这并没有解决问题。我应该在这里做什么逃跑?有没有通用的方法来做到这一点? (我想避免转义特定字符,例如“+”)
谢谢!
根据 SOSL specification,+ 是保留字符,必须用反斜杠转义。所有需要转义的字符都是? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -
要转义这些字符,您可以使用以下 gsub
:
"email+special@example.net".gsub(/(\?|&|\||\!|\{|\}|\[|\]|\(|\)|\^|\~|\*|\:|\|\"|\'|\+|\-)/){|special| "\" + special }
原回答: