myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Тема закрытаНачать новую тему

> Фильтр Тэгов, есть текст с тэгами. их надо убрать

Теги
Нет тегов для показа
MEXAHuK
сообщение 2.3.2009, 13:56
Сообщение #1


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




я както тут скачал замечательный скрипт AscIIArtBot и переписал его под собственные нужды.
теперь у меня такая трабла. те текстовые файлы что у меня есть содержат html тэги.
можете ли Вы привести пример кода который будет фильровать теги и заменять их на их текстовый аналог(<br> на знак новой строки и т.п.)??
Go to the top of the page
+Quote Post
Wariner
сообщение 2.3.2009, 14:03
Сообщение #2


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




Код
msg = msg:gsub("<br>", "\n")
Go to the top of the page
+Quote Post
alex82
сообщение 2.3.2009, 14:05
Сообщение #3


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Код
HTML = {["&lt;br&gt;"] = "\n", ["<br />"] = "\n", ["<br>"] = "\n", ["&quot;"] = "\"", ["&lt;"] = "<", ["&gt;"] = ">"}
function ReplaceTags(data)
    for i in pairs(HTML) do
        data=string.gsub(data,i,HTML[i]);    
    end
    return data
end
Go to the top of the page
+Quote Post
MEXAHuK
сообщение 2.3.2009, 15:06
Сообщение #4


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




спасибо)
как засунуть сюда?
Код
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 документом. просто текст с тэгами.
Go to the top of the page
+Quote Post
Wariner
сообщение 2.3.2009, 15:36
Сообщение #5


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




почитай гденибудь что такое функции в языках! если не разберёшься то с программированием можно завязывать!


если вкратце то саму фукцию вставляем в любое место скрипта а вызов функции осуществляется по имени функции в твоём случае
Код
ReplaceTags(contents)


надеюсь место вставки сам додумаешь))))

+ эта функция никак не связанна с html она просто заменяет одни символы на другие(в твоём же случае html-теги)
Go to the top of the page
+Quote Post
MEXAHuK
сообщение 2.3.2009, 17:06
Сообщение #6


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




спасибо Алекс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

тему можно закрыть
Go to the top of the page
+Quote Post
Wariner
сообщение 2.3.2009, 17:38
Сообщение #7


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




Думаю оптимальнее будет так
Код
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


+ мой ник по русски Воринер(ну можно и Варинер)....
Go to the top of the page
+Quote Post
Setuper
сообщение 2.3.2009, 17:54
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Оптимальнее не использовать цикл, а открыть файл и считать файл полностью:
Код
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
Go to the top of the page
+Quote Post

Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsФильтр чата. ChatFilter
Версия 1.0 | Замена мата или рекламы на разные фразы.
2 Infinity_Love 7 775 22.12.2010, 23:32 Посл. сообщение: Infinity_Love
No New Posts Фильтр команды
Помогите дописать скрипт
11 foXDEvil 13 519 7.10.2010, 6:00 Посл. сообщение: foXDEvil
Moved Фильтр команды
Помогите дописать скрипт
0 foXDEvil 0 5.10.2010, 12:05 Посл. сообщение: foXDEvil

 



RSS Сейчас: 23.11.2024, 14:34