一个PHP正则表达式删除html中的空格

时间:2012-02-01 12:02:52

标签: php regex

嗨,我有一个类似

的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>

请有人帮我这个吗? :)

2 个答案:

答案 0 :(得分:4)

您可以用空字符串替换(?<=>)\s+(?=<)|(?<=>)\s+(?!=<)|(?!<=>)\s+(?=<)

修改:有一种更简单的形式:替换(?<=>)\s+|\s+(?=<)

简单地说,如果左侧为>或右侧为<,此正则表达式将替换一组一个或多个空格。

它实际上有两个部分由 OR (符号:|)连接,所以任何一个都可以匹配:

  1. (?<=>)\s+ - 这将匹配一个或多个空格(正则表达式中为\s+),如果前面有<(在正则表达式中:(?<=>) )。

  2. \s+(?!=<) - 如果后跟<(正则表达式:(?!=<)

  3. ,则会匹配一个或多个空格

    Learn more关于正则表达式。

答案 1 :(得分:0)

您可能想看看CleanRegex,它的API比PHP preg_方法更简洁,

<?php
pattern('(?<=>)\s+|\s+(?=<)')->replace($content)->with('');

甚至

<?php
pattern('(?<=>)\s+|\s+(?=<)')->remove($content);