На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Дополнения к правилам (только для данного раздела)
- Используйте подсветку синтаксиса при выделении исходного кода;
- В описании темы обязательно укажите язык программирования;
- Прежде чем задать вопрос, обязательно воспользуйтесь поиском и загляните в FAQ раздела.
- Если вопрос касается серверного ПО, указывайте ОС.
- Если вопрос касается ASP.NET то лучше будет задать его в соответствующем разделе. Там вы сможете получить ответ намного быстрее.

Модераторы: Serafim, fatalist
  
> Удалить все коментарии в HTML файле одни , Есть решение на Perl, помогите отладить
    Есть такой скрипт
    ExpandedWrap disabled
      use strict;
      my $p=q~
      <script>
      alert("<!--")
      </script>
      1{<!-- REMOVE ME PLEASE  -->}
      <h1>header</h1>
       
      <style type="text/css">
      <!--
      img{border:1px solid red;content:"-->"}
      -->
      </style>
      <img src="23.gif" ismap />2{<!-- <- :) -->}
      <img src="23.gif" />3{<!--545ds-->}
      <img alt="<!--" ismap src="img.gif" title='-->' >
      4{<!--
      comment
      -->}
      <a title='-->' >aaa</a>
      5{<!--se -->}
       
      <script >
      <!--
      alert("<!-- -->")
      //-->
      </script>
       
      <p align=center title=8742>
      6{<!-- z332 <a href= 324> -->}
      ~;
       
      # РегВыр находит Либо любой тег кроме "<!DOCTYPE..." и "<?xml...", либо
      # пару тегов script или style (открывающий и закрывающий теги)
      # В этот рег четыре раза внедрена конструкция (?(условие)да-паттерн|нет-паттерн):
      # первый раз для понимания с чем мы имеем дело с комментарием или с обычным тегом,
      # второй раз для обработки значений аттрибутов тегов которые не заключены в кавычки.
      # третий и четвёртый для того чтобы находить закрывающие пары для тегов <script...> и <style...>
      # Парсить атрибуты надо т.к можно напороться на вот такую конструкцию:
      # <img alt="<!--" src="img.gif" title='-->' >
      # т.е атрибут может содержать символ - ">" на котором запореться, на превый взгляд рабочий, регВыр типа:
      # <\w+[^>]*>
      $p=~s/(<(\/)?((!--)|(script)|(style)|\w+)(?(4).*?-->|(\s+\w+(?:\s*=\s*(["'])?(?(8)[^\8]+?\8|\S+?(?=[>\s])))?)*?\s*\/?>(?(5).*?<\/script>|(?(6).*?<\/style>))))/$1 if !$4/gise;
      print $p;

    он работает но при параметре -w
    Вылазят два одинаковых предупреждения
    Цитата

    Illegal octal digit '8' ignored at C:\docs\mydocs\perl\HTMLcommentEraser2.pl line 48.
    Illegal octal digit '8' ignored at C:\docs\mydocs\perl\HTMLcommentEraser2.pl line 48.


    Почему?
      Mixxx, выдели ту сорок восьмую строчку, которую материт скрипт
        Их тут всего 47..........................
          p_kolya
          ExpandedWrap disabled
            $p=~s/(<(\/)?((!--)|(script)|(style)|\w+)(?(4).*?-->|(\s+\w+(?:\s*=\s*(["'])?(?(8)[^\8]+?\8|\S+?(?=[>\s])))?)*?\s*\/?>(?(5).*?<\/script>|(?(6).*?<\/style>))))/$1 if !$4/gise;


          Мне сказали что это из-за того что [^\8] это не то что я думаю, хотя не уточнили что же это на самом деле :) вопрос остаётся открытым.
            \x8 -- это бэкспэйс, скорее всего, ненужный тебе. Факт.

            Вот в восьмеричной системе циферки 8 не бывает, а это из матчасти, на которую Перл тщетно старается указать. Мне стыдно показывать пальцем на учебник по информатике, где системы исчисления описываются.

            Эрго 1:
            s/\\8/\\x08/g и отлаживай дальше.

            А может, имелся в виду и обратный слэш с восьмеркой.

            Эрго 2:
            Удвой слэш, и счастье удвоится. Но это скорее всего не то.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0204 ]   [ 15 queries used ]   [ Generated: 27.04.24, 04:22 GMT ]