2017-08-06 84 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 –