我需要一个正则表达式来从字符串中删除单行注释,但保持URL不变。代码应该是这样的:
//Some Comment on http://bobobo.com where bla < 5
<script type="text/javascript" src="http://bububu.com"></script>
<script type='text/javascript' src='http://bababa.com'></script>
击> <击> 撞击>
编辑:当然我不在HTML文件中使用那种评论。正确的例子是
<script type="text/javascript">
//Some Comment on http://bobobo.com where bla < 5
</script>
<script type="text/javascript" src="http://bububu.com"></script>
<script type='text/javascript' src='http://bababa.com'></script>
我的不好,抱歉误导了。
可能的解决方案应该是找到“//对http://bobobo.com的某些评论,其中bla <5”,而不是“//bububu.com”&gt;“和”//bababa.com“&gt;”。
感谢任何暗示......
答案 0 :(得分:1)
简短的回答是:不要。原因是单行注释不是HTML中的有效注释。它们只是文本标记。你不应该在你的代码中拥有它们。在将它们插入源中之前将其消除。
我尝试使用PHP的DomDocument
和DomXPath
给出一个替代答案,但它只支持XPath 1.0,并且替换功能在2.0之前不存在。我对XPath 1.0不够熟悉,无法替换DOM中的字符串。以下是您需要做的事情:
\s*//.*
(点与换行符不匹配)替换为''。答案 1 :(得分:1)
谢谢大家,但最后还是
preg_match('!//.*?\n!', $data, $matches);
似乎在评论之前有或没有空格,制表符或新行。
答案 2 :(得分:0)
正则表达式为^//
。
在preg_replace()
中,您可以使用字符串'!^//!'
。 !
用作正则表达式分隔符,以避免倾斜牙签综合征('/^\/\//'
)。
如果您的行可以以空格开头,则可以使用^\s*//
。
答案 3 :(得分:0)
您也可以使用它来删除单独出现在一行上的评论
/(?!http:)\/\//
答案 4 :(得分:0)
preg_replace( '~^\h?//(^$)~m', '', $html );
替换//直到带有''的行的末尾,前面有可选的水平空格。没有经过测试,但这样的事情应该有效。