2014-10-08 54 views
0

似乎我有一个非常特殊的问题,因为到目前为止我在网上找不到任何相关的解决方案。我有Smarty模板,在做一些细微的修改后,我几乎可以用trimwhitespace滤镜去除所有不必要的空白。然而,我不能摆脱标签内的主要空白。请看下面的两个例子:使用preg_replace修剪html标签中的所有空格

<h1>A headline without any leading whitespace</h1> 

<h1> 
    A headline like it would be formatted by an IDE 
</h1> 

我的问题是,Smarty trimwhitespace输出过滤器不修剪第二个例子。当我使用CSS在标题前放置一个图标时:之前,图标和第二个示例之间有空白,但在应用于第一个示例时没有。

是否可以使用preg_replace修剪第二个示例,以便它看起来与第一个示例中的HTML相同?

回答

2
(?<=<h1>)\s*|\s*(?=<\/h1>) 

尝试this.See演示。

http://regex101.com/r/hQ1rP0/61

+1

谢谢,几乎完成了这项工作。但我不仅需要在h1标签之间而且在所有html标签之间进行替换。你的正则表达式的一个小修改就像一个魅力:(?<=>)\ s * | \ s *(?= <\ /) – 2014-10-08 09:20:00

+0

@MartinFriedrichBauer thanx ..这应该很容易...使其通用:) – vks 2014-10-08 09:20:40

+0

好主意,使用'+'量词而不是'*' – 2014-10-08 09:21:10

0

此功能应该有所帮助。

function anyname($string) 
{ 
return preg_replace(array('/\s{2,}/', '/\n/'), '', $string); 
}