Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP缩小JavaScript_Javascript_Php_Regex_Comments_Whitespace - Fatal编程技术网

使用PHP缩小JavaScript

使用PHP缩小JavaScript,javascript,php,regex,comments,whitespace,Javascript,Php,Regex,Comments,Whitespace,嘿,朋友们。我有以下代码来使用PHP缩小JavaScript。它的工作是删除评论和空白。。。。但它会删除注释并替换为一行新的 \n 但是当我尝试用替换时,\n JavaScript给了我一个如何删除注释的编译器错误 我知道有很多PHP库需要缩小,但我需要自己的 下面是我在com.PHP上看到的PHP代码 function compress_js($buffer){ $replace = array( "/\/\*[\s\S]*?\*\//" => '',//remove nul

嘿,朋友们。我有以下代码来使用PHP缩小JavaScript。它的工作是删除评论和空白。。。。但它会删除注释并替换为一行新的 \n 但是当我尝试用替换时,\n JavaScript给了我一个如何删除注释的编译器错误

我知道有很多PHP库需要缩小,但我需要自己的

下面是我在com.PHP上看到的PHP代码

function compress_js($buffer){      
$replace = array(
"/\/\*[\s\S]*?\*\//" => '',//remove nultile line comment
"/\/\/.*$/" => '',//remove single line comment
'#[\r\n]+#'   => "\n",// remove blank lines and \r's
'#\n([ \t]*//.*?\n)*#s'   => "\n",// strip line comments (whole line only)
'#([^\\])//([^\'"\n]*)\n#s' => "\\1\n",
'#\n\s+#' => "\n",// strip excess whitespace
'#\s+\n#' => "\n",// strip excess whitespace
'#(//[^\n]*\n)#s' => "\\1\n", // extra line feed after any comments left
);

$search = array_keys( $replace );
$script = preg_replace( $search, $replace, $buffer );
$replace = array(
"&&\n" => '&&',
'|| ' => '||',
"(\n"  => '(',
")\n"  => ')',
"[\n"  => '[',
"]\n"  => ']',
"+\n"  => '+',
",\n"  => ',',
"?\n"  => '?',
":\n"  => ':',
";\n"  => ';',
"{\n"  => '{',
"\n]"  => ']',
"\n)"  => ')',
"\n}"  => '}',
' ='  => '=',
'= '  => '=',
"\n\n" => ' ',
'if (' => 'if(',
' || ' => '||'
);
$search = array_keys($replace);
$script = str_replace( $search, $replace, $script );
$script = str_replace(';}', '}',$script);
return  $script;
}

ob_start('compress_js');
header('Content-type: text/javascript');

readfile('foo.js');

正如大家所说的,你最好选择普通的解决方案,因为这很棘手。虽然如果您只需要通过php回显几行javascript,并且必须缩小它,那么您做得很好

只需添加:

返回preg_replace/\r |\n/,$script


在你的功能结束时。

看一看:不要尝试创建你自己的迷你们,当已经有好的开源替代品时,这是浪费时间。人们总是会告诉你不要重新发明轮子。。。你说你需要自己的minifyer-你能解释一下为什么要阻止这些类型的评论吗?@Lix因为我想了解其他人是如何用这种方法来检测你在代码中的当前位置是否可以缩小的,以及你需要应用哪些规则来保持状态。您拥有的是一组简单的右线性文法,也称为reg EXP或L3。您需要一个上下文敏感语法作为解析器的一种次要形式。