我需要将单行注释(//...)
转换为注释(/*...*/)
。我在下面的代码中几乎完成了这个任务;然而,我需要这个函数来跳过任何一行注释已经在块注释中。目前它与任何单行注释匹配,即使单行注释在块注释中也是如此。将单行注释转换为注释
## Convert Single Line Comment to Block Comments
function singleLineComments(&$output) {
$output = preg_replace_callback('#//(.*)#m',
create_function(
'$match',
'return "/* " . trim(mb_substr($match[1], 0)) . " */";'
), $output
);
}
那么我不会担心,如果$ x =“一些字符串//带斜线”;变成$ x =“一些字符串/ *斜杠* /”;.这实际上是首选。另一方面,我添加了您所建议的更改并收到编译错误。 警告:preg_replace_callback()[function.preg-replace-callback]:编译失败:lookbehind断言在C:\ wamp \ www \ LessCSS \ Site \ cleaner \ inc \ util.php中的偏移量6处不是固定长度29 – roydukkey 2009-10-02 04:22:54
PHP的外观只支持固定长度的断言。这意味着你不能编写一个匹配未定义字符数的后备式正则表达式,这将排除使用*和?。更多信息在这里:http://www.php.net/manual/en/regexp.reference.assertions.php – 2009-10-02 04:39:12
谢谢你的抬头。应该现在工作。 – 2009-10-02 16:25:15