Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите выпилить весь JS из html файла
Форумы портала PHP.SU » PHP » Регулярные выражения » Помогите выпилить весь JS из html файла

Страниц (1): [1]
 

1. nkl - 05 Сентября, 2014 - 09:30:25 - перейти к сообщению
почему-то такое выражение:
PHP:
скопировать код в буфер обмена
  1. preg_replace("/<script(.*)<\/script>/s", "<!--test-->", $input_lines);

выпиливает абсолютно все, начиная с первого попавшегося тега <script>.

Я вообще не силен в регулярках и думаю тут явно где-то ошибся.
2. Мелкий - 05 Сентября, 2014 - 09:58:08 - перейти к сообщению
Не абсолютно всё, а абсолютно всё от первого <script до последнего </script>
Жадность. Регулярка жадная, сначала хапает всё, и только потом неохотно отдаёт.

Надо жадность убрать:
PHP:
скопировать код в буфер обмена
  1. preg_replace('~<script.+?<\/script>~uis', "<!--test-->", $input_lines);
3. Tyoma5891 - 05 Сентября, 2014 - 09:59:33 - перейти к сообщению

подойдет?
4. nkl - 05 Сентября, 2014 - 10:25:45 - перейти к сообщению
Спасибо большое за ответы, но вроде как сам разобрался после того как нашел тут про эту самую "жадность". В общем у меня вот так заработало:
PHP:
скопировать код в буфер обмена
  1. preg_replace("/(<script(.*?)<\/script>)/s", "<!--test-->", $input_lines);

(Добавление)
Мелкий, твоя тоже работает. Спасибо!
(Добавление)
Tyoma5891, не strip_tags() не пойдет, мне же не весь html почикать нужно, а только удалить гребаный кулхацкерный js, который рекламой всю страницу залепляет.

 

Powered by ExBB FM 1.0 RC1