php - 如何使用此 preg_replace 取消注释 JavaScript 代码?

标签 php javascript preg-replace obfuscation minify

我正在尝试使用 php preg_replace() 在我的 javascript 中取消注释我的 //comments 并制作一个 preg_replace 应该执行以下操作:

1.当注释在新行开始时,删除整行: //评论.....

2.当注释在脚本后面时,在 1 TAB//之后删除该注释部分 exampleScript();//(1space) 注释

3.不要匹配http://中的//

这个 pregreplace 完成了上述工作,但是,它目前删除了 3 行代码,其中包含 //(请参阅下面的错误匹配标题)它应该跳过。

$buffer = preg_replace('/(?<!http:)\/\/\s*[^\r\n]*/', '', $buffer);

匹配良好

//某事

//something *!&~@#^hjksdhaf

function();//注释

错误匹配

(/\/\.\//)
"//"  
"://"  

那么,我怎样才能过滤掉这三个错误的匹配项,以及如何更改下面的正则表达式?

(?<!http:)\/\/\s*[^\r\n]*

PS,我不希望将其他人的代码压缩器/框架与他们自己的开销一起使用。现在只是我自己的。

最佳答案

为什么不使用预先存在的 JavaScript 压缩器,比如 YUI Compressor (PHP 绑定(bind) here)?


如果您真的打算自己编写,请查看 source code看看它是如何完成的。
简短版本:正确的方法是使用适当的解析器/分词器方法。

关于php - 如何使用此 preg_replace 取消注释 JavaScript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162948/

相关文章:

php - 如何使用 preg_replace 仅检查字母?

php - 多个json数据进入mysql数据库表不插入

php file_get_contents - 在 javascript 执行之后

php - preg_replace 网址但不是图像

php - MySQL/PHP preg_replace 和 KEEP 重音符号和空格

javascript - 为什么 for 循环有时会跳过一些迭代?

php - 为什么我的更新声明和表格不起作用?

php - 方法 whereHas 不存在

javascript - 在 FullCalendar 中点击一天获取事件

javascript - 返回与 jQuery 连接的动态字符串