2014-10-08 64 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); 
}