嗨,我有一个类似
的HTML<html>
<head>
<title>
Some title
</title>
</head>
<body>
<div id="one"> some sample info </div>
</body>
</html>
如何使用preg_replace删除此html中的空白除了内容和标签内的空格?所以得到这样的东西
<html><head><title>Some title</title></head><body><div id="one">some sample info</div></body></html>
请有人帮我这个吗? :)
答案 0 :(得分:4)
您可以用空字符串替换(?<=>)\s+(?=<)|(?<=>)\s+(?!=<)|(?!<=>)\s+(?=<)
。
修改:有一种更简单的形式:替换(?<=>)\s+|\s+(?=<)
简单地说,如果左侧为>
或右侧为<
,此正则表达式将替换一组一个或多个空格。
它实际上有两个部分由 OR (符号:|
)连接,所以任何一个都可以匹配:
(?<=>)\s+
- 这将匹配一个或多个空格(正则表达式中为\s+
),如果前面有<
(在正则表达式中:(?<=>)
)。
\s+(?!=<)
- 如果后跟<
(正则表达式:(?!=<)
)
Learn more关于正则表达式。
答案 1 :(得分:0)
您可能想看看CleanRegex,它的API比PHP preg_
方法更简洁,
<?php
pattern('(?<=>)\s+|\s+(?=<)')->replace($content)->with('');
甚至
<?php
pattern('(?<=>)\s+|\s+(?=<)')->remove($content);