2016-09-23 146 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