Php 如何删除注释行以//开头,而不是像http://那样使用preg\u replace

Php 如何删除注释行以//开头,而不是像http://那样使用preg\u replace,php,preg-replace,Php,Preg Replace,我需要从代码中删除注释行 preg_replace('!//(.*)!', '', $test); 它很好用。但它也会删除网站url,并保留类似http的url: 所以为了避免这种情况,我使用了类似于preg_replace(“![^:://(.*)!”、“,$test”)的方法 很好。但问题是,如果我的代码有下面这行代码 $code = 'something';// comment here 它将用分号替换注释行。那就是更换我上面的代码后会怎么样 $code = 'something'

我需要从代码中删除注释行

preg_replace('!//(.*)!', '', $test);
它很好用。但它也会删除网站url,并保留类似http的url:

所以为了避免这种情况,我使用了类似于
preg_replace(“![^:://(.*)!”、“,$test”)的方法

很好。但问题是,如果我的代码有下面这行代码

$code = 'something';// comment here
它将用分号替换注释行。那就是更换我上面的代码后会怎么样

$code = 'something'
所以它会产生错误

我只需要删除单行注释,url应该保持不变

请帮忙。提前感谢

试试这个

preg_replace('@(?<!http:)//.*@','',$test);

preg_replace('@(?如果要解析PHP文件并操作其中包含的PHP代码,最好的解决方案(即使有点困难)是使用:它的存在是为了允许操作PHP代码


为这样的事情使用正则表达式是个坏主意

例如,您考虑了
http://
;但是包含
/
的字符串呢?
例如,像这个:

$str = "this is // a test";

这可能会很快变得复杂。字符串中的
/
有更多用途。如果您正在解析PHP代码,我强烈建议您查看。它是专门为解析PHP代码而设计的

问:你为什么一开始就试图删除评论


编辑:我知道你现在正在尝试解析JavaScript,而不是PHP。那么,为什么不改用JavaScript缩略器呢?它将删除注释、空白,并做更多的工作,使文件尽可能小。

嗨,谢谢你的帮助。但实际上我想通过phpOh从JavaScript文件中删除注释:-(;;不过,使用正则表达式可能不是一个好主意:总会有一种情况是你没有考虑过的……取决于你到底想要实现什么,也许像YUI压缩器这样的东西可能会有所帮助?谢谢你的建议pascal。这段代码在使用前运行良好@(?谢谢。但它会生成警告消息warning:preg|u replace()[function.preg replace]:未知修饰符'h'对不起-分隔符已更正-现在它可以工作了,至少我已经测试过了您还可以编写http的[http | https]实例来接受两个协议:preg|u replace('@)是的,是真的。但我暂时需要临时解决办法。就是这样。找到了解决办法。谢谢