' striphtml: скрипт уборки
тегов (c) 2004 Alex 'LabRat' Lobanov
outstr=WScript.Arguments(1)
arg0=WScript.Arguments(0)
set fso=createobject("scripting.filesystemobject")
set i_txtfile = fso.opentextfile(arg0,1) ' входной html-файл
set o_txtfile = fso.createtextfile(outstr,1) ' выходной, plain text
do while i_txtfile.atendofstream <> true
'do while i_txtfile.atendofline <> true 'проблемы при составных файлах
i_line=i_txtfile.readline
StripHtmlCode i_line
o_txtfile.writeline(i_line)
loop
Sub StripHTMLCode(txt)
Dim oReg
Set oReg = New RegExp ' Create regular expression.
oReg.Global = True ' All matches
oReg.IgnoreCase = True ' Make case insensitive.
oReg.Pattern = "(<DD>| )" ' замена на пробелы
oReg.Global = True ' All matches
txt = oReg.Replace(txt, " ")
' oReg.Pattern = "<P>"
' oReg.Global = True ' All matches
' txt = oReg.Replace(txt, "")
' oReg.Pattern = "<br>" ' 'Замена на перевод строки (force wrap)
oReg.Pattern = "<(br|p)>" ' 'Замена на перевод строки (force wrap)
oReg.Global = True ' All matches
txt = oReg.Replace(txt, " " & vbCrLf)
'TESTED:
' oReg.Pattern = "(<((/.*)|((div .*"")|(p)|(DD)|(b)))>)" ' режет все что надо,
' расширяется - легко: главное следить за порядком и количеством скобок
' oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)) .*"")|(p)|(b)|(i)|(html)|(tr)|(tbody)))>)" ' тоже режет все,
' кроме тегов, содержащих перевод строки
' Следующая строчка задает маску для убийства всех трудов скрипта makehtml2.vbs
' oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)|(a)) .*"")|(p)|(b)|(i)|(html)|(tr)|(tbody)|(ul)|(li)))>)"
oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)|(a)) .*"")|(b)|(i)|(html)|(tr)|(tbody)|(ul)|(li)))>)"
oReg.Global = True ' All matches
txt = oReg.Replace(txt, "") ' убиваем теги разметки (сбоит, если
' внутри тега есть перевод строки)
oReg.Pattern = "<" '
oReg.Global = True ' All matches
txt = oReg.Replace(txt, "<")
oReg.Pattern = ">" '
oReg.Global = True ' All matches
txt = oReg.Replace(txt, ">")
oReg.Pattern = "&" '
oReg.Global = True ' All matches
txt = oReg.Replace(txt, "&")
' Поиск инфы об авторе (индексная аббревиатура документа)
oReg.Pattern = ".*LAV" 'сигнатура индекса с пробелами
oReg.Global = True ' All matches
txt = oReg.Replace(txt, "LAV")
' Поиск даты создания в формате "имени Винтукея"
oReg.Pattern = "(.*)((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))"
if oReg.Test(txt) then
oReg.Global = True
set matches = oReg.Execute(txt)
' set match=matches(0) ' ругается
for each Match in Matches ' Match у нас одна, поэтому цикл ;)
datestrbeg=match.Value ' Получаем начало строки даты
Set oReg1 = New RegExp ' Создаем плэйс для доп. рег. выражения
oReg1.Global = True ' Глобально ищем
oReg1.IgnoreCase = True ' Херим кейс (чувствительность к регу)
oReg1.Pattern=" " ' ищем лид. пробелы перед строкой даты
datestrbeg=oReg1.Replace(datestrbeg,"") ' удаляем
next
' All matches
txt = oReg.Replace(txt, datestrbeg) ' подставляем "похудевшую" строку
end if
' oReg.Pattern = ".*LAV" ' Dot+Tab
' oReg.Global = True ' All matches
' txt = oReg.Replace(txt, "LAV")
End Sub