|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 23 May 2002 15:14:19 To : Alexander V. Gaiduk Subject : Re: Hа: Удалить все html-теги из переменной, оставив содержание -------------------------------------------------------------------------------- Alexander V. Gaiduk wrote: > $str =~ s/(<(?=!--)([^>]|\n)*--(?=>)>)//ig; > $str =~ s/|(<\/?([^>]|\n)*>)//g; > > на особых эстэтов, типа VW и AC это не расчитано :) Поскольку я не VW и не AC (хищно потирая руки)... Было: $str =~ s/(<(?=!--)([^>]|\n)*--(?=>)>)//ig; что это? Попытка вырезать теги HTML коментариев? 1. Использование zero-width positive look-ahead здесь бессмысленно. 2. Использование модификатора i для этого выражения бессмысленно. 3. Конструкция ([^>]|\n) - бессмысленна, поскольку идентична просто [^>]. 4. В комментариях разрешено использование знака >. 5. Обертывание всего выражения в скобки - бессмысленно, если не используется возвращаемое значение. Итого: $str =~ s/<!--.*?-->//gs; Было: $str =~ s/|(<\/?([^>]|\n)*>)//g; 1. Использование | в качестве первого символа регулярного выражения ошибочно. 2. Конструкция \/? в данном контексте бессмысленна. Есть слэш или нет - он буде поглощен конструкцией [^>]. 3. См. п. 3 из предыдущего примера. 4. См. п. 5 из предыдущего примера. Итого: $str =~ s/<[^>]*>//g; Андрей P.S. Существуют вырожденные случаи HTML тегов, о валидности которых можно поспорить. Hапример: <input type="submit" name="s" value="OK" onclick="if (a>b) doit();"> --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/52845568deb3.html, оценка из 5, голосов 10
|