SHARE
TWEET

validateHTML

AZJIO Jun 23rd, 2019 236 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #region ;**** Directives created by AutoIt3Wrapper_GUI ****
  2. #AutoIt3Wrapper_OutFile=validateHTML.exe
  3. #AutoIt3Wrapper_UseX64=n
  4. #AutoIt3Wrapper_UseUpx=n
  5. ; #AutoIt3Wrapper_Compression=4
  6. #AutoIt3Wrapper_Res_Comment=-
  7. #AutoIt3Wrapper_Res_Description=validateHTML.exe
  8. #AutoIt3Wrapper_Res_Fileversion=0.1.0.0
  9. #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=n
  10. #AutoIt3Wrapper_Res_LegalCopyright=AZJIO
  11. #AutoIt3Wrapper_Res_Language=1033
  12. #AutoIt3Wrapper_Run_AU3Check=n
  13. #AutoIt3Wrapper_Res_Field=Version|0.1
  14. #AutoIt3Wrapper_Res_Field=Build|2019.06.23
  15. #AutoIt3Wrapper_Res_Field=Coded by|AZJIO
  16. #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time%
  17. #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
  18. #AutoIt3Wrapper_Run_Obfuscator=y
  19. #Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
  20. #AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"
  21. #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
  22.  
  23. ; AZJIO
  24. Local $LngDn, $LngMB1, $LngWrn
  25. Local $hFile, $sFileList, $sText
  26.  
  27. ; En
  28. $LngWrn = 'Warning'
  29. $LngMB1 = 'Are you sure you want to check for errors in the HTML files in the folder?'
  30. $LngDn = 'Done!'
  31.  
  32. ; Ru
  33. ; если русская локализация, то русский язык
  34. If @OSLang = 0419 Then
  35.     $LngWrn = 'Предупреждение'
  36.     $LngMB1 = 'Вы действительно хотите проверить ошибки в HTML-файлах, находящиеся в папке?'
  37.     $LngDn = 'Готово! Результат в буфере обмена.'
  38. EndIf
  39.  
  40. If MsgBox(4 + 48, $LngWrn, $LngMB1) = 7 Then Exit
  41.  
  42. #include <FileOperations.au3>
  43. $sPath = @ScriptDir & '\html' ; Папка поиска
  44. $Len = StringLen($sPath & '\') ; Чтобы возврат относительных путей
  45. $sFileList = _FO_FileSearch($sPath, '*.htm*')
  46.  
  47. $sOutText = ''
  48. For $i = 1 To $sFileList[0]
  49.     $sText = FileRead($sFileList[$i])
  50.     $sText = StringRegExpReplace($sText, "<\w+\h[^<>]+?\h/>", "") ; удаление одинарных закрытых тегов типа <br /> или <img src='...' /> чтобы не получать их в результаты
  51.     $sText = _CountingTegsHTML($sText)
  52.     If Not @error And $sText Then
  53.         $sOutText &= StringTrimLeft($sFileList[$i], $Len) & @CRLF & $sText & @CRLF & @CRLF ; сосставляем лог для результата в буфер обмена
  54.     EndIf
  55. Next
  56. MsgBox(0, '', $LngDn)
  57. ClipPut($sOutText)
  58.  
  59. ; ============================================================================================
  60. ; Имя функции ...: _CountingTegsHTML
  61. ; Описание ........: Валидация тегов HTML. Побсчитывает открывающие и закрывающие теги и выводит разницу
  62. ; Синтаксис.......: _CountingTegsHTML ( $sText )
  63. ; Параметры:
  64. ;       $sText - текст HTML
  65. ; Возвращаемое значение: Успешно - Возвращает строку
  66. ;                   Неудачно -'', @error:
  67. ;                  |0 - нет ошибок
  68. ;                  |1 - один из массивов пуст
  69. ; Автор ..........: AZJIO
  70. ; Примечания ..: Учитывает регистр String <> StRiNg <> STRING
  71. ; ============================================================================================
  72. Func _CountingTegsHTML($sText)
  73.     Local $i, $aTegs, $oSD, $sOutText
  74.     $aTegsStart = StringRegExp($sText, '<(\w+)(?:\h[^<>]+)?>', 3)
  75.     $aTegsEnd = StringRegExp($sText, '</(\w+)>', 3)
  76.     If UBound($aTegsStart) = 0 Or UBound($aTegsEnd) = 0 Then Return SetError(1, 0, '')
  77.  
  78.     $oSD = ObjCreate("Scripting.Dictionary")
  79.     $oSD.CompareMode = 1 ; с учётом регистра
  80.     For $i In $aTegsStart
  81.         $oSD.Item($i) = $oSD.Item($i) + 1 ; подсчитываем число открывающих тегов увеличивая на 1
  82.     Next
  83.     For $i In $aTegsEnd
  84.         $oSD.Item($i) = $oSD.Item($i) - 1 ; минусуем число закрывающими тегами уменьшая на 1
  85.     Next
  86.     $aTegs = $oSD.Keys() ; получаем имена ключей в массив
  87.     $sOutText = ''
  88.     ; Теги для игнора, потому что им не нужен закрывающий
  89.     $oSD.Item('br') = 0
  90.     $oSD.Item('meta') = 0
  91.     $oSD.Item('link') = 0
  92.     $oSD.Item('hr') = 0
  93.     $oSD.Item('img') = 0
  94.  
  95.     For $i In $aTegs
  96.         If $oSD.Item($i) = 0 Then ContinueLoop
  97.         $sOutText &= $oSD.Item($i) & @TAB & $i & @CRLF
  98.     Next
  99.     ; If $k = 0 Then Return SetError(2, 0, '')
  100.     Return SetError(0, 0, $sOutText)
  101. EndFunc   ;==>_CountingStringUnique
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top