Удалить CDATA

shake1

Хранитель порядка
Регистрация
16 Янв 2013
Сообщения
534
Реакции
605
Помогите регулярку поправить чтобы удаляла
//<![CDATA[
//]]>
PHP:
// remove javascript comments
(?:<script[^>]*>|\G(?!\A))(?:[^\'"\/<]+|"(?:[^\\"]+|\\.)*"|\'(?:[^\\\']+|\\.)*\'|\/(?!\/)|<(?!\/script))*+\K\/\/[^\n|<]*
 

aurora2000

Постоялец
Регистрация
24 Авг 2014
Сообщения
120
Реакции
42
Код:
(\/\*[\w\'\s\r\n\*]*\*\/)|(\/\/[\w\s\']*)|(\<![\-\-\s\w\>\/]*\>)

не?
 

shake1

Хранитель порядка
Регистрация
16 Янв 2013
Сообщения
534
Реакции
605
Untitled-1.jpg
Для полноты картины
PHP:
<?php
namespace PHPWee;

    class HtmlMin{
            // -- Function Name : minify - Params : $html, $js = true, $css = true
        public static function minify($html) {
            /**
             * The set of regular expressions to match against
             * the given HTML and their respective replacements.
             * Reference: https://github.com/ogheo/yii2-htmlcompress
             * @var array
             */
            $filters = [
                // remove javascript comments
                '/(?:<script[^>]*>|\G(?!\A))(?:[^\'"\/<]+|"(?:[^\\"]+|\\.)*"|\'(?:[^\\\']+|\\.)*\'|\/(?!\/)|<(?!\/script))*+\K\/\/[^\n|<]*/xsu' => '',
                // remove html comments except IE conditions
                '/<!--(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!-->).)*-->/su' => '',
                // remove comments in the form /* */
                '/\/+?\s*\*[\s\S]*?\*\s*\/+/u' => '',
                // shorten multiple white spaces
                '/>\s{2,}</u' => '><',
                // shorten multiple white spaces
                '/\s{2,}/u' => ' ',
                // collapse new lines
                '/(\r?\n)/u' => '',
            ];

            return preg_replace(array_keys($filters), array_values($filters), $html);
        }
    }
Есть такое решение для CDATA, должно быть точно рабочим, но не могу сшить с исходной строкой
PHP:
'/^\s*\/\/<!\[CDATA\[([\s\S]*)\/\/\]\]>\s*\z/'
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
Исходный вариант Для просмотра ссылки Войди или Зарегистрируйся удаляет эти комментарии Для просмотра ссылки Войди или Зарегистрируйся
PHP:
'/(?:<script[^>]*>|\G(?!\A))(?:[^\'"\/<]+|"(?:[^\\"]+|\\.)*"|\'(?:[^\\\']+|\\.)*\'|\/(?!\/)|<(?!\/script))*+\K\/\/[^\n|<]*/xsu'
Тут не учтена разница между Для просмотра ссылки Войди или Зарегистрируйся и строками в одинарных кавычках.
Ещё тут поменяли [^\n]* на [^\n|<]*. Видимо, чтобы обрабатывать случай, когда </script> на одной строке с комментарием.
Тогда лучше там поменять на (?: [^\n<]+ | <(?!/script) )*
 
Сверху