我必须解析包含不同类型注释的各种文件。我一直试图找到一个简单的方法来删除这些评论,但到目前为止还没有什么好处。我有完整的评论,从#和;开始和相关数据后的评论。最好的例子:
data
data
#comment
;comment
data ;comment
data #comment
剥离这些评论的任何帮助?也许还有空行?
答案 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));