2011-12-25 83 views
-2

模板丟失格式格式化模板Smarty的處理後

(源的n ++)前:

<!DOCTYPE html> 
<html lang='ru'> 
    <head> 

後(來源瀏覽器):

<!DOCTYPE html><html lang='ru'><head> 

,我不知道如何解決它。幫幫我!

+0

您是否使用HTML5肯定?因爲您在此提供的'!DOCTYPE'是HTML5的DTD,所以如果您使用任何其他版本的HTML,請嘗試放入適當的HTML DTD,因爲錯誤的DTD會以不尋常的方式呈現您的模板。 – ikartik90 2011-12-25 05:55:51

+0

並善意闡述你的問題。如果需要答案,它需要詳細信息。 – ikartik90 2011-12-25 05:56:28

+0

你不明白。在Smarty中處理模板之後,完全丟失了代碼格式(填充,製表符等)。對不起,我的英語:> – d3head 2011-12-25 06:02:04

回答

0

格式對HTML解析器不重要。無論是否包含空白,瀏覽器都將顯示相同的輸出。

但它真的很重要,那麼你確實有幾個選擇。

第一個是安裝PHP的Tidy擴展(http://php.net/manual/en/book.tidy.php)。然後,您可以將Smarty的輸出捕獲到一個字符串中,並通過整潔函數傳遞它以獲取格式化的HTML字符串。

第二種是使用外部命令行工具,如htmltidy。你可以將你的輸出捕獲到一個字符串並通過exec()將它傳遞給命令行實用程序。

但說實話,我並不認爲所付出的努力真的值得,就像我說的那樣,HTML解析器對空白不感興趣。

+0

以前,一切都很好...... – d3head 2011-12-25 10:49:54

2

正如@GordonM所解釋的,在處理瀏覽器時,「源格式化」是不必要的。它可能對人類有幫助,但就是這樣。 a)使用(Firefox | Chrome | Safari)的開發者控制檯,將爲您提供一個互動的,結構良好的DOM視圖。忽視任何可能存在或不存在的空白。這些是我們想要使用的工具。 b)Smarty帶有一個名爲trimwhitespace的輸出過濾器。如果您應用該過濾器,則會刪除所有不必要的空格和註釋。這樣做是爲了減少必須傳輸到瀏覽器的文本的大小。您希望儘可能少地發送更好的性能。我們稱之爲「縮小」。您可能在Javascript和CSS世界聽說過它。

C)你的示例代碼顯示換行和空格,之後我運行它通過Smarty的3.1

0

檢查Smarty的設置爲刪除HTML輸出的所有空格(假設你使用Smarty的3,請檢查您是否使用的輸出濾波器,做到這一點,信息here),並檢查你的模板內容被包裝成{strip}標籤(信息here)。

如果你不使用這些過濾器/標籤中的一個,恐怕問題不是Smarty的,而是一個微小的過程在其他地方....