这是情景:的preg_match - 执行console.log去除
- JS文件加载到字符串中使用的file_get_contents
- 我想删除从中
- 所有调试信息对于找出什么目的在发生的PHP代码我使用 的preg_match
我使用这个表达式:
(\/\/)?(\s*?)console\.(log|debug|info|log|warn|error|assert|dir|dirxml|trace|group|groupEnd|time|timeEnd|profile|profileEnd|count)\((.*?[^}(])\);?$
在regex101和phpliveregex网站它匹配:
//console.log(abc)
// console.log(abc)
// console.log(abc);
// console.log('abc');
console.log(abc);
console.log('abc' + some_function());
etc...
但是,当我把它放在PHP代码:
preg_match('/(\/\/)?(\s*?)console\.(log|debug|info|log|warn|error|assert|dir|dirxml|trace|group|groupEnd|time|timeEnd|profile|profileEnd|count)\((.*?[^}(])\);?$/', $js_code, $matches);
if (!empty($matches[0])) print_r($matches[0]);
我没有得到任何比赛。太累了,没有注意到我错过了什么。可能有些东西用它的大眼睛盯着我。 :) 任何帮助,将不胜感激。
很好的简化。 :) 是的,我需要不同的变种,如日志,警告等。 我在PHP调试过程中发现,有些行中有这种console.log: console.log(fdv + some_function()) }); 注意到最后一些函数的关闭。我不希望那部分被删除。 – BeeEm
@BeeEm要捕获方法名称,请参阅我的更新答案。 – Jan
我觉得你不了解我很好。对不起,我造成了困惑。我不需要获取函数名称,我想删除所有类型的调试信息,如console.log,console.warn等。这就是为什么我有(日志|警告|信息|调试|错误)。这种线可以在开始时//或不在。 Console.log不需要以分号结尾。 JS代码可能很混乱,它可能碰巧有这样一行:console.warn('something')});你的正则表达式可以将所有内容匹配到分号,从而有效地将闭包在JS代码中打开,至少会产生语法错误。 – BeeEm