2017-08-06 52 views
0

我有以下口主体代码的HTML页面:如何捕获并追加到HTML body标签与图案LUA

<body class="one two three" id="five" data-key="value"> 

而且我使用Lua模式追加一个div来结尾:

<body class="one two three" id="five" data-key="value"><div></div> 

我该怎么做?

注:我用下面前head标签之前插入脚本:

body_filter_by_lua_block { 
    replacestr = "<script></script></head>" 
    ngx.arg[1] = ngx.re.sub(ngx.arg[1],"</head>", replacestr) 
    return 
} 

因此,如果我加入我的股利replacestr,我该怎么替换为ngx.re.sub(ngx.arg[1],"</head>", replacestr)

+0

问题标题询问如何替换HTML标记。你的实际问题是询问如何*追加*标签。这是两个不同的任务;你想要哪一个? –

+0

@NicolBolas他们都是同一件事。用'xy'代替'x'是一个附加。另外,[很好](https://stackoverflow.com/help/be-nice)。 – amingilani

+1

我不认为我说过的话不好,要求你澄清你的问题并不是不好。另外,一个可以用'xy'代替'x'的操作也是一个可以用'yz'代替'x'的操作。鉴于可以将'y'附加到'x'的操作永远不会导致'x'被转换为'yz'。那么,你想要哪一个? –

回答

0

我做到了。

ngx.re.sub(ngx.arg[1], '(<body[^>]*>)', "${0}" .. replacestr) 
+0

您绝对不应该在任何中途严重的应用程序中使用正则表达式使用HTML。例如,属性值可能包含'>'(请参阅https://html.spec.whatwg.org/multipage/syntax.html#syntax-attributes),在这种情况下,您的代码将产生垃圾。 –

+0

嗯,好点。你有选择追加到身体标签吗? – amingilani

+0

你应该谷歌的“HTML解析器Lua”。也许'ngx'模块里面有东西。以下链接看起来很有希望:https://craigbarnes.gitlab.io/lua-gumbo/#examples –