Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region ;**** Directives created by AutoIt3Wrapper_GUI ****
- #AutoIt3Wrapper_OutFile=validateHTML.exe
- #AutoIt3Wrapper_UseX64=n
- #AutoIt3Wrapper_UseUpx=n
- ; #AutoIt3Wrapper_Compression=4
- #AutoIt3Wrapper_Res_Comment=-
- #AutoIt3Wrapper_Res_Description=validateHTML.exe
- #AutoIt3Wrapper_Res_Fileversion=0.1.0.0
- #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n
- #AutoIt3Wrapper_Res_LegalCopyright=AZJIO
- #AutoIt3Wrapper_Res_Language=1033
- #AutoIt3Wrapper_Run_AU3Check=n
- #AutoIt3Wrapper_Res_Field=Version|0.1
- #AutoIt3Wrapper_Res_Field=Build|2019.06.23
- #AutoIt3Wrapper_Res_Field=Coded by|AZJIO
- #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
- #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
- #AutoIt3Wrapper_Run_Obfuscator=y
- #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
- #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
- #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
- ; AZJIO
- Local $LngDn, $LngMB1, $LngWrn
- Local $hFile, $sFileList, $sText
- ; En
- $LngWrn = 'Warning'
- $LngMB1 = 'Are you sure you want to check for errors in the HTML files in the folder?'
- $LngDn = 'Done!'
- ; Ru
- ; если русская локализация, то русский язык
- If @OSLang = 0419 Then
- $LngWrn = 'Предупреждение'
- $LngMB1 = 'Вы действительно хотите проверить ошибки в HTML-файлах, находящиеся в папке?'
- $LngDn = 'Готово! Результат в буфере обмена.'
- EndIf
- If MsgBox(4 + 48, $LngWrn, $LngMB1) = 7 Then Exit
- #include <FileOperations.au3>
- $sPath = @ScriptDir & '\html' ; Папка поиска
- $Len = StringLen($sPath & '\') ; Чтобы возврат относительных путей
- $sFileList = _FO_FileSearch($sPath, '*.htm*')
- $sOutText = ''
- For $i = 1 To $sFileList[0]
- $sText = FileRead($sFileList[$i])
- $sText = StringRegExpReplace($sText, "<\w+\h[^<>]+?\h/>", "") ; удаление одинарных закрытых тегов типа <br /> или <img src='...' /> чтобы не получать их в результаты
- $sText = _CountingTegsHTML($sText)
- If Not @error And $sText Then
- $sOutText &= StringTrimLeft($sFileList[$i], $Len) & @CRLF & $sText & @CRLF & @CRLF ; сосставляем лог для результата в буфер обмена
- EndIf
- Next
- MsgBox(0, '', $LngDn)
- ClipPut($sOutText)
- ; ============================================================================================
- ; Имя функции ...: _CountingTegsHTML
- ; Описание ........: Валидация тегов HTML. Побсчитывает открывающие и закрывающие теги и выводит разницу
- ; Синтаксис.......: _CountingTegsHTML ( $sText )
- ; Параметры:
- ; $sText - текст HTML
- ; Возвращаемое значение: Успешно - Возвращает строку
- ; Неудачно -'', @error:
- ; |0 - нет ошибок
- ; |1 - один из массивов пуст
- ; Автор ..........: AZJIO
- ; Примечания ..: Учитывает регистр String <> StRiNg <> STRING
- ; ============================================================================================
- Func _CountingTegsHTML($sText)
- Local $i, $aTegs, $oSD, $sOutText
- $aTegsStart = StringRegExp($sText, '<(\w+)(?:\h[^<>]+)?>', 3)
- $aTegsEnd = StringRegExp($sText, '</(\w+)>', 3)
- If UBound($aTegsStart) = 0 Or UBound($aTegsEnd) = 0 Then Return SetError(1, 0, '')
- $oSD = ObjCreate("Scripting.Dictionary")
- $oSD.CompareMode = 1 ; с учётом регистра
- For $i In $aTegsStart
- $oSD.Item($i) = $oSD.Item($i) + 1 ; подсчитываем число открывающих тегов увеличивая на 1
- Next
- For $i In $aTegsEnd
- $oSD.Item($i) = $oSD.Item($i) - 1 ; минусуем число закрывающими тегами уменьшая на 1
- Next
- $aTegs = $oSD.Keys() ; получаем имена ключей в массив
- $sOutText = ''
- ; Теги для игнора, потому что им не нужен закрывающий
- $oSD.Item('br') = 0
- $oSD.Item('meta') = 0
- $oSD.Item('link') = 0
- $oSD.Item('hr') = 0
- $oSD.Item('img') = 0
- For $i In $aTegs
- If $oSD.Item($i) = 0 Then ContinueLoop
- $sOutText &= $oSD.Item($i) & @TAB & $i & @CRLF
- Next
- ; If $k = 0 Then Return SetError(2, 0, '')
- Return SetError(0, 0, $sOutText)
- EndFunc ;==>_CountingStringUnique
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement