Удаление комментариев из файла JS / CSS с использованием [PHP] - PullRequest
5 голосов
/ 22 декабря 2010

Я создаю PHP-скрипт для минимизации CSS / Javascript , который (очевидно) включает в себя удаление комментариев из файла.Есть идеи, как это сделать?(Желательно, мне нужно избавиться от /**/ и // комментариев)

Ответы [ 4 ]

5 голосов
/ 21 ноября 2013

Шаблон для удаления комментариев в JS

$pattern = '/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/';

Шаблон для удаления комментариев в CSS

$pattern = '!/\*[^*]*\*+([^/][^*]*\*+)*/!'; 

$str = preg_replace($pattern, '', $str);

Надеюсь, выше должно помочь кому-то ..

REFF: http://castlesblog.com/2010/august/14/php-javascript-css-minification

4 голосов
/ 22 декабря 2010

Это колесо было изобретено - http://code.google.com/p/minify/.

1 голос
/ 22 декабря 2010

Взгляните на minify , «тяжелое основанное на регулярных выражениях удаление пробелов, ненужных комментариев и токенов».

0 голосов
/ 27 октября 2018

Без шаблонов preg, без чего-либо подобного, это легко сделать с помощью встроенного в PHP TOKENIZER.Все три (в том числе PHP, JS и CSS) имеют одинаковый способ представления комментариев в исходных файлах, а встроенная в PHP встроенная функция token_get_all() (без флага TOKEN_PARSE) может испортить трюк, даже если строка вводане правильно сформированный PHP-код, который именно то, что может понадобиться в этом сценарии.Все, что он просит, это <?php в начале строки, и происходит волшебство.:)

function no_comments ($tokens)
{   // Remove all block and line comments in css/js files with PHP tokenizer.
    $remove = [];
    $suspects = ['T_COMMENT', 'T_DOC_COMMENT'];
    $iterate = token_get_all ('<?php '. PHP_EOL . $tokens);

    foreach ($iterate as $token) 
    {
        if (is_array ($token)) 
        {
            $name = token_name ($token[0]); 
            $chr = substr($token[1],0,1);

            if (in_array ($name, $suspects) 
            && $chr !== '#') $remove[] = $token[1];
        }
    }

    return str_replace ($remove, null, $tokens);
}

Использование идет примерно так:

echo no_comments ($myCSSorJsStringWithComments);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...