| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > Как удалить содержимое STYLE и SCRIPT |
| Автор: comhunt 2.5.2010, 22:34 |
| Каким образом модно сделать то что написано в сабже? Попробовал сконструировать такую конструкцию: $content=~s/<script.*>.*<\/script>//g; Не работает. И самое главное я не понимаю почему именно? |
| Автор: shamber 2.5.2010, 22:48 |
| comhunt, вы пример того что удаляете приведите |
| Автор: comhunt 3.5.2010, 12:21 |
| Пример контента, которые необходимо удалить: <script> function blablabla(){ } </SCRIPT> <STYLE> .class{color:#FF0000;} </style> |
| Автор: DurRandir 3.5.2010, 14:03 |
| Почему не работает - потому что у вас case-sensitive сравнение, а закрывающий тег - в верхнем регистре. Но регулярка всё равно неверна, скормите ей <script></script> disappears <script></script> remains Потому что у вас "жадные" модификаторы количества. Но и это ещё не всё. Что вы хотите получить после обработки вот такого куска: <script<script></script>> - у вас будет на выходе <script>, ну и закрывающаяся скобка точно так же делается. Вуаля. |
| Автор: Logo 21.5.2013, 22:56 | ||
Правильней
- модификатор i игнорирования регистра, s - точка совпадает в том числе и с переводом строки. Но если хотите не допустить скриптов на странице и защитится от XSS, лучше поискать готовое решение, либо подойти к делу более основательно, почитав соответствующие статьи. Помимо тега <script> скрипты можно включать в разные атрибуты, например onclick, ссылки с урлом javascript://, в старых версиях ie css expression. |