Openresty:用ngx.re.gsub来解决lua的魔术角色问题

时间:2014-08-21 07:18:38

标签: lua openresty

我想从其他字符串中将一个单词替换为我的正文内容 为了实现这一点,我正在使用 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.

请让我知道如何实现这一目标。

2 个答案:

答案 0 :(得分:0)

在ngx正则表达式中,$1$2等是可变的,以便捕获。尝试转义$字符:

body = "$$100.00"

答案 1 :(得分:0)

使用函数包裹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)