首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用[PHP]从JS / CSS文件中删除注释

使用[PHP]从JS / CSS文件中删除注释
EN

Stack Overflow用户
提问于 2010-12-22 15:08:33
回答 4查看 2.8K关注 0票数 5

我正在构建一个PHP脚本来缩小CSS/Javascript,,这(显然)涉及删除文件中的注释。有什么办法吗?(最好,我需要去掉/**///注释)

EN

回答 4

Stack Overflow用户

发布于 2013-11-21 12:04:52

JS中删除注释的模式

代码语言:javascript
运行
复制
$pattern = '/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/';

CSS中删除注释的模式

代码语言:javascript
运行
复制
$pattern = '!/\*[^*]*\*+([^/][^*]*\*+)*/!'; 

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

我希望上面能帮助到某人。

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

票数 5
EN

Stack Overflow用户

发布于 2010-12-22 15:11:18

那个轮子是发明的-- https://github.com/mrclay/minify

票数 4
EN

Stack Overflow用户

发布于 2018-10-27 12:51:29

没有preg模式,没有任何类似的东西,这可以很容易地用PHP内置TOKENIZER。这三种语言(PHP、JS和CSS )都有相同的方式来表示源文件中的注释,而PHP的原生内置token_get_all()函数(没有TOKEN_PARSE标志)可以执行肮脏的操作,即使输入字符串不是格式良好的PHP代码,这正是本场景中可能需要的。它所要求的只是字符串开始时的<?php和魔术的发生。:)

代码语言:javascript
运行
复制
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);
}

用法如下:

代码语言:javascript
运行
复制
echo no_comments ($myCSSorJsStringWithComments);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4510518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档