2016-09-23 147 views
1

我有一个JavaScript文件,myjs.php,它是在服务器上生成的,并通过头部传递给浏览器。在php文件中删除javascript评论

Header("content-type: application/x-javascript; charset=utf-8"); 

的文件大且含有大量的被呼应了JS部分中的注释:

echo " // comments /* comments */ etc. 

我意识到,如果需要的话,我可以重写PHP,使所有的评论是内PHP部分。

在PHP中,有没有办法在运行时删除这些注释,以便它们不是通过缩小或通过其他方式传递给浏览器的文件的一部分?

+0

取决于你如何dancyage输出,但essentialy你需要ob_start(例如:http://stackoverflow.com/questions/4401949/whats-the-use-of-ob-start-in-php) –

回答

0

您可以使用诸如来自PHP包装器的UglifyJS之类的工具。有包来处理它,如UglifyPHP。生成的文件后,在其上运行的minifier,这也将剥离评论:

use UglifyPHP\JS; 

$js = new JS(['myjs.php']); 

$js->minify('myjs.js', [ 
    'comments' => false, 
]); 

在结合ob_start()ob_get_contents()ob_end_clean()和使用原始文件流作为输入就可以达到预期的效果。


更新:

加入这个由OP的需求,如果没有得到可能使用比纯LAMP堆栈的任何其他。

下面是关于如何从文件中删除单和多PHP评论的引用:

Regex to strip comments and multi-line comments and empty lines

和这里的工作普遍的解决方案:

Best way to automatically remove comments from PHP code

该做的伎俩。

+0

谢谢小子二进制,我只在xampp上运行,所以我怀疑我是否可以尝试实现这一点。 – martin

+0

有一个关于“沙盒LAMP服务器”的部分,如果这是你的问题。 Hovewever,如果你使用共享主机(或类似的受限制环境),我想唯一剩下的选择是用正则表达式去掉注释,并用'ob_ *'函数处理输出。 – Nevertheless

+0

你如何用正则表达式来做到这一点? – martin