OpenResty:使用ngx.re.gsub处理Lua魔法字符时遇到问题。

我想把另一个字符串中的一个单词替换成我的主体内容。 为了实现这一点,我正在使用 ngx.re.sgub,但是我遇到了奇怪的问题。ngx.re.gsub 无法处理特殊字符。

  • 例:

    content1 = "HiTestHello Test how are you Testall "
    _ssi = "Test"
    body = "$100.00"
    content2 = ngx.re.gsub(content1, _ssi, body)
    ngx.print(content2)
    

输出如下:

Hi.00lHelo .00 how are you .00all he.00llo .00 how are you .00all

而输出应该是:

Hi$100.00Hello .00 how are you .00all.

请告诉我如何实现这一点。

点赞
用户1009479
用户1009479

在 ngx regex 中,$1$2 等是要捕获的变量。尝试转义 $ 字符:

body = "$$100.00"
2014-08-21 07:32:24
用户2278997
用户2278997

body 与一个函数包装起来也避免了它:

content1 = "HiTestHello Test how are you Testall "
_ssi = "Test"
body = "$100.00"
content2 = ngx.re.gsub(content1, _ssi, function()
    return body
end, "o")
ngx.print(content2)
2016-10-31 06:58:57