在PHP中替换//注释行

在PHP中替换//注释行,php,regex,preg-replace,Php,Regex,Preg Replace,我试图使用preg\u replace删除字符串中以/开头的任何行 到目前为止,我的代码是: $str=preg_replace('.^/(.*))$,'.$str) 它没有删除任何内容。您需要添加m修饰符。没有它,^和$表示字符串的开始和结束。用m表示一行的开始和结束 您已将表达式定位到直线的起点和终点。不确定这是否是有意的,因为这只包括完整的注释 此外,如@daniel williams所述,默认情况下,^$匹配字符串的开头和结尾,而不是行的开头和结尾 以下内容适用于任何地方的任何/注释(并

我试图使用
preg\u replace
删除字符串中以
/
开头的任何行

到目前为止,我的代码是:

$str=preg_replace('.^/(.*))$,'.$str)


它没有删除任何内容。

您需要添加
m
修饰符。没有它,
^
$
表示字符串的开始和结束。用
m
表示一行的开始和结束


您已将表达式定位到直线的起点和终点。不确定这是否是有意的,因为这只包括完整的注释

此外,如@daniel williams所述,默认情况下,
^$
匹配字符串的开头和结尾,而不是行的开头和结尾

以下内容适用于任何地方的任何
/
注释(并且仅输出当前行,因为默认情况下
与换行符不匹配):

或者,如果您还想捕捉注释前面的任何空白:

$result = preg_replace('%\p{Zs}*//(.*)%u', '', $subject);
如果您还想删除注释前面的任何空格和换行符,并确保注释前面至少有一个空格(以避免弄乱URL),您可以尝试以下方法:

$result = preg_replace('%\s+//.*%', '', $subject);
此外,还包括
#
注释:

$result = preg_replace('%\s+(?://|#).*%', '', $subject);

您正在寻找
preg_replace('.^/.*\R?#m',''.$str)
PHP警告:preg_replace():未知修饰符“g”
出现了一些奇怪的行为。它似乎用断线代替了它。@Daniel Williams嗯,它真的不应该。。。在我的机器上工作™ 顺便说一句,在使用正则表达式时,我强烈建议您自己准备一份。我非常高兴在回来的路上花了钱,因为我一直在使用它来生成、理解和“调试”正则表达式。我在末尾添加了
\r\n
,因此它删除了换行符,现在可以工作了<代码>$str=preg_replace('%\p{Zs}*/(.*)\r\n%u',''$str)谢谢你的帮助。我注意到它将变成
var url=http://www.example.com';
to
var url='http
,因此它正在截断字符串的其余部分。请修改您的解决方案,使其只查找
/
前面的空格或制表符,好吗?
$result = preg_replace('%\s+//.*%', '', $subject);
$result = preg_replace('%\s+(?://|#).*%', '', $subject);