Ich möchte utf8 HTML-Entitäten in HTML-Quellen mit echten Zeichen zu ersetzen. Ich habe die Ersatztabelle "Entitäten", die mit Code unterschritten wird. Wenn ich diesen Code benutze, nutzt er meine CPU zu 100%.Mein Lua-Code mit meiner CPU auf 100%
Könnten Sie mir bitte helfen, die erste Schleife besser zu schreiben? Ich verstehe, dass Strings in Lua unveränderlich sind, also denke ich, dass es viele Kopien von Datenvariablen gibt und dies könnte der Grund sein.
local entities = {
{["char"]="!", ["utf"]="!"},
{["char"]='"', ["utf"]="""},
{["char"]="#", ["utf"]="#"},
{["char"]="$", ["utf"]="$"},
{["char"]="%", ["utf"]="%"},
{["char"]="&", ["utf"]="&"},
{["char"]="'", ["utf"]="'"},
-- +312 rows more
}
local function clear_text(data)
for _, e in ipairs(entities) do
data = string.gsub(data, e.utf, e.char)
end
return data
end
-- this is just for testing ... replacement in many html sources
for i=1,200 do
local data = some_html_page_source()
clear_text(data)
end
Aber das ist rückwärts. Sie möchten, dass der utf-Wert der Schlüssel ist. Und diese nehmen mehrere Charaktere auf. –
In der Tat. Ich habe die Frage völlig falsch verstanden. Dies macht es schwieriger, aber Sie könnten immer noch das gleiche Prinzip verwenden. –
Geben Sie mir einen Moment, um über Lua's Mustervergleich zu lesen, da es kein Standard-Regex ist. –