在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';
tovar url='http
,因此它正在截断字符串的其余部分。请修改您的解决方案,使其只查找/
前面的空格或制表符,好吗?
$result = preg_replace('%\s+//.*%', '', $subject);
$result = preg_replace('%\s+(?://|#).*%', '', $subject);