我正在写一个评论剥离器,并试图在这里满足所有需求。我有下面的代码堆栈,它删除了几乎所有的评论,但它实际上走得太远了。很多时间都花在了尝试、测试和研究匹配的正则表达式模式上,但我并不认为它们在每个方面都是最好的。
我的问题是,我也有“PHP 注释”(在标准代码甚至 PHP 字符串中并不是真正的注释)的情况,我实际上并不想删除这些注释。
例子:
<?php $Var = "Blah blah //this must not comment"; // this must comment. ?>
最终发生的事情是它虔诚地剥离,这很好,但它留下了某些问题:
<?php $Var = "Blah blah ?>
还:
也会导致问题,因为注释删除了该行的其余部分,包括结尾?>
看到问题了吗?所以这就是我需要的...
- '' 或 "" 中的注释字符需要忽略
- 同一行中使用双斜杠的 PHP 注释应该只删除注释本身,或者应该删除整个 php 代码块。
这是我目前使用的模式,请随时告诉我是否可以对现有模式进行改进?:)
$CompressedData = $OriginalData;
$CompressedData = preg_replace('!/\*.*?\*/!s', '', $CompressedData); // removes /* comments */
$CompressedData = preg_replace('!//.*?\n!', '', $CompressedData); // removes //comments
$CompressedData = preg_replace('!#.*?\n!', '', $CompressedData); // removes # comments
$CompressedData = preg_replace('/<!--(.*?)-->/', '', $CompressedData); // removes HTML comments
您能给我的任何帮助将不胜感激!:)