在PHP中从文件中删除注释

时间:2011-04-04 18:48:25

标签: php

我必须解析包含不同类型注释的各种文件。我一直试图找到一个简单的方法来删除这些评论,但到目前为止还没有什么好处。我有完整的评论,从#和;开始和相关数据后的评论。最好的例子:

data
data
#comment
;comment
data ;comment
data #comment

剥离这些评论的任何帮助?也许还有空行?

2 个答案:

答案 0 :(得分:4)

这应该有效(live demo):

echo preg_replace(
    '/
        [;#]    # remove strings starting with ; or #
        .*      # and everything following that
        $       # until it ends in a newline
    /mx',       // make it span multilines
    '',
    $data
);

上面的内容将留下空行注释的全线注释。如果您想要替换它们,请在第一个\s之前添加[;#](如下面的@konforce所示)。

答案 1 :(得分:3)

$t = ltrim(preg_replace('/\s*[#;].*$/m', '', $t));

应该有效。删除所有注释,确保不要在注释中留下任何空白行。在评论之前也会杀死空白,但如果您不想这样做,可以将其更改为\s\n

编辑:刚刚看到有关删除空行的说明。以下内容应删除注释和空行:

$t = ltrim(preg_replace('/(\s*[#;].*$)|(^\s*)/m', '', $t));

未经测试,但第二个条件应该捕获空白(仅空白)行。仍然需要ltrim来删除主要评论可能导致的任何空白。可能会将其作为正则表达式的一部分,但我认为ltrim不太复杂。

再次编辑:实际上上面会删除每一行的所有前导空格。如果这是一个问题,你可以用以下方法修复它:

$t = ltrim(preg_replace('/(\s*[#;].*$)|(^\s*\n)/m', '', $t));