使用[PHP]从JS/CSS文件中删除注释
我正在构建一个PHP脚本来缩小CSS/Javascript,这(显然)需要从文件中删除注释。有什么办法吗?(最好,我需要去掉使用[PHP]从JS/CSS文件中删除注释,php,css,minify,Php,Css,Minify,我正在构建一个PHP脚本来缩小CSS/Javascript,这(显然)需要从文件中删除注释。有什么办法吗?(最好,我需要去掉/***/和/注释)轮子已经发明了--看看,一种“基于正则表达式的大量删除空白、不必要的注释和标记的模式。”用于删除JS中的注释 $pattern = '/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/'; CSS中删除注释的模式 $pattern = '!/\*[^*]*\*+([^/][^*]*\*+)*/!';
/***/
和/
注释)轮子已经发明了--看看,一种“基于正则表达式的大量删除空白、不必要的注释和标记的模式。”用于删除JS中的注释
$pattern = '/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/';
CSS中删除注释的模式
$pattern = '!/\*[^*]*\*+([^/][^*]*\*+)*/!';
$str = preg_replace($pattern, '', $str);
我希望上面能帮助到某人
REFF:没有preg模式,没有任何相似的模式,这可以通过PHP内置的标记器轻松完成。这三个函数(PHP、JS和CSS)在源文件中都使用相同的表示注释的方式,PHP的本机内置
token\u get\u All()
函数(不带token\u PARSE
标志)可以使用肮脏的技巧,即使输入字符串不是格式良好的PHP代码,这正是本场景中可能需要的。它所要求的是Ehm。。。解析CSS和JS?如果你不能做到这一点,请使用现有的迷你程序,例如google closure compiler for JS。不是答案,而是。。。值得注意的是,缩小CSS和JavaScript并不是一件小事。即使您对删除注释和空白所提供的最小大小缩减感到满意,您编写的任何解析器都可能因边缘情况而失败。说真的,使用第三方工具的建议相当不错。这是对这个问题的回答。他试图解决的问题已经解决了。如果他不想使用这个解决方案,他至少可以从中获得灵感。特别是Minify_CSS_Compressor和JSMin类。2.1.4分支有最新版本。这种从css中删除注释的模式是唯一对我有效(完全有效)的模式。谢谢
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);