Javascript 在HTML中查找注释

Javascript 在HTML中查找注释,javascript,html,perl,comments,Javascript,Html,Perl,Comments,我有一个HTML文件,里面可能有Javascript、PHP和所有这些东西,人们可能会也可能不会把它们放进他们的HTML文件中 我想从这个html文件中提取所有注释 我可以指出这样做的两个问题: 一种语言中的注释可能不是另一种语言中的注释 在Javascript中,剩余的行使用/标记注释掉。但是URL也包含/,因此如果我 只需应用替换/,然后 行的其余部分,没有任何内容 所以这不是一个小问题 是否已经有解决方案 有人已经这样做了吗?从你的话来看,你似乎正在考虑一些基于正则表达式的方法:在整个文件

我有一个HTML文件,里面可能有Javascript、PHP和所有这些东西,人们可能会也可能不会把它们放进他们的HTML文件中

我想从这个html文件中提取所有注释

我可以指出这样做的两个问题:

  • 一种语言中的注释可能不是另一种语言中的注释

  • 在Javascript中,剩余的行使用
    /
    标记注释掉。但是URL也包含
    /
    ,因此如果我 只需应用替换
    /
    ,然后 行的其余部分,没有任何内容

  • 所以这不是一个小问题

    是否已经有解决方案


    有人已经这样做了吗?

    从你的话来看,你似乎正在考虑一些基于正则表达式的方法:在整个文件上这样做是一件痛苦的事情,尝试使用一些工具突出显示或丢弃有趣或无趣的文本,然后根据保留/丢弃标准来处理筛出的内容。看看HTML::Tree和TreeBuilder,处理HTML标记可能非常有用。

    问题2:当你用两种语言编写时,不是每个url都引用了“www.url.com”或“www.url.com”吗?我不确定。如果是这样的话,那么你所要做的就是解析代码,检查反斜杠前面是否有引号,以知道它是一个真实的url还是一个注释

    研究像ANTLR这样的语法分析器生成器,并编写一个嵌套解析器来可靠地查找注释。如果准确性很重要,正则表达式就帮不了你。即便如此,它也不会100%准确

    考虑

    问题3,语言中的注释并不总是语言中的注释

    <textarea><!-- not a comment --></textarea>
    <script>var re = /[/*]not a comment[*/]/, str = "//not a comment";</script>
    
    
    var re=/[/*]不是注释[*/],str=“//不是注释”;
    
    问题4,嵌入在语言中的注释可能并不明显是注释

    <button onclick="&#47;&#47; this is a comment//&#10;notAComment()">
    
    
    
    问题5,什么是注释可能取决于浏览器的配置方式

    <noscript><!-- </noscript> Whether this is a comment depends on whether JS is turned on -->
    <!--[if IE 8]>This is a comment, except on IE 8<![endif]-->
    
    
    

    对于上下文模板系统,我必须部分地解决这个问题,该系统从源代码中删除注释,以防止泄漏软件实现细节


    显示在JavaScript中标识注释的测试用例,稍后的测试用例显示在CSS和HTML中标识的注释。您可以修改该代码以查找注释。它不会处理PHP代码部分中的注释。

    我会将HTML文件转换为字符数组并对其进行解析。您可以检测到诸如“您是对的,这不是小事。为了可靠地删除注释,您需要完全解析文件(PHP、HTML和Javascript)。如果可能的话,我建议使用PHP;虽然我更喜欢Perl,但PHP的工具本身要比使用Perl的工具更好。这里有一些东西可以让您开始:。然后您只需要在PHP中找到HTML和javascript解析器,就可以对文件的这些部分执行类似的操作。为什么要在HTML文件中使用PHP?我想您只有CSS、 JavaScript和HTML,然后谷歌的“HTML浏览器”可以删除评论、空白和通常的“精简”“你的页面。@RB,要解析的html可能在某个时候甚至不是我的。你的观点#2正是我在评论中总是使用///的原因——只是一个随机点,但我以前遇到过这个问题,它永远改变了我的评论习惯;)你需要这种能力的原因是什么?你说的“摘录”是指保留评论还是丢弃评论?我打算丢弃评论,但不必这样做是一个更模块化的解决方案。所以你解决了这个问题?如果没有(也许我没有正确理解你的问题),问题出在哪里没有。URL没有可靠的引用<代码>是一个反例<代码>正文{背景:url(http://example.com/bg.png)}是另一个问题。我根本没有解决这个问题,目前我正在开发一个适用于我的需要的低级解决方案,只删除单行javascript注释,等等。拥有一个可以将html放入其中并获取其中注释的函数的梦想,所有问题都得到了解决。。这仍然是一个梦想。