Автор: MEXAHuK 2.3.2009, 13:56
я както тут скачал замечательный скрипт AscIIArtBot и переписал его под собственные нужды.
теперь у меня такая трабла. те текстовые файлы что у меня есть содержат html тэги.
можете ли Вы привести пример кода который будет фильровать теги и заменять их на их текстовый аналог(<br> на знак новой строки и т.п.)??
Автор: Wariner 2.3.2009, 14:03
Код
msg = msg:gsub("<br>", "\n")
Автор: alex82 2.3.2009, 14:05
Код
HTML = {["<br>"] = "\n", ["<br />"] = "\n", ["<br>"] = "\n", ["""] = "\"", ["<"] = "<", [">"] = ">"}
function ReplaceTags(data)
for i in pairs(HTML) do
data=string.gsub(data,i,HTML[i]);
end
return data
end
Автор: MEXAHuK 2.3.2009, 15:06
спасибо)
как засунуть сюда?
Код
function ChatArrival(user,data)
Core.GetUserAllData(user)
data=string.sub(data,1,string.len(data)-1)
if( string.sub(data, 1, 1) == "<" ) then
s,e,cmd = string.find(data,"%b<>%s+(%S+)")
cmd = string.sub(cmd, 2,string.len(cmd))
if io.open(CDFolder.."/"..cmd..".txt",r) ~= nil then
showtext(user, cmd)
return true
end
end
end
function showtext(user, file)
local contents ="\r\n\r\n"
for line in io.lines(CDFolder.."/"..file..".txt") do
contents = contents..line.."\r\n"
end
--Core.SendToAll(user.sNick.."\r\n"..contents.."\r\n|")
Core.SendPmToNick(user.sNick,Bot,contents)
end
текст который берётся не является html документом. просто текст с тэгами.
Автор: Wariner 2.3.2009, 15:36
почитай гденибудь что такое функции в языках! если не разберёшься то с программированием можно завязывать!
если вкратце то саму фукцию вставляем в любое место скрипта а вызов функции осуществляется по имени функции в твоём случае
Код
ReplaceTags(contents)
надеюсь место вставки сам додумаешь))))
+ эта функция никак не связанна с html она просто заменяет одни символы на другие(в твоём же случае html-теги)
Автор: MEXAHuK 2.3.2009, 17:06
спасибо Алекс82 и Маринеру! буду биться лбом об ваши ступни!
сделал так
Код
function showtext(user, file)
local contents ="\r\n\r\n"
for line in io.lines(CDFolder.."/"..file..".txt") do
contents = ReplaceTags(contents..line.."\r\n")
end
Core.SendPmToNick(user.sNick,Bot,contents)
end
тему можно закрыть
Автор: Wariner 2.3.2009, 17:38
Думаю оптимальнее будет так
Код
function showtext(user, file)
local contents ="\r\n\r\n"
for line in io.lines(CDFolder.."/"..file..".txt") do
contents = contents..line.."\r\n"
end
contents = ReplaceTags(contents)
Core.SendPmToNick(user.sNick,Bot,contents)
end
+ мой ник по русски Воринер(ну можно и Варинер)....
Автор: Setuper 2.3.2009, 17:54
Оптимальнее не использовать цикл, а открыть файл и считать файл полностью:
Код
function showtext(user, file)
local contents, f ="\r\n\r\n", io.open(CDFolder.."/"..file..".txt")
if f then
contents = contents..f:read('*a')
end
contents = ReplaceTags(contents)
Core.SendPmToNick(user.sNick,Bot,contents)
end