2012-06-13 82 views
1

我正在編寫一個PHP框架,並且遇到了一些格式問題。如何評估PHP中的HTML深度?

我的意圖是加載幾個文件的組合,將它們一起編譯,然後將它們踢出它們合適的HTML。在這個過程中,我打算縮進或縮小,因爲我正在逐步行進。現在,我使用了簡單檢查'<','& lt /'和'/ & gt'(在這裏不能使用真實字符)以及一些XML解析來實現這一點的組合,但我確定有更好的方法來做到這一點。

現在我的代碼給了我這樣的事情:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Your Sitename - Module - Index</title> 
    <link rel="stylesheet" href="layout/layout/default/css/styles.css" type="text/css" /> 
    <link rel="stylesheet" href="php/plugins/MoviePlayer/windows/IE/Silverlight/css/silverlight.css" type="text/css" /> 
     <script type="text/javascript" src="js/Cookies.js"></script> 
     <script type="text/javascript" src="js/GlobalReady.js"></script> 
     <script type="text/javascript" src="js/PluginDetection.js"></script> 
     <script type="text/javascript" src="js/Silverlight.js"></script> 
      <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script> 
      <script type="text/javascript" src="js/jquery.flow.1.2.js"></script> 
      <script type="text/javascript" src="layout/layout/default/js/LayoutInit.js"></script> 
      <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/SLPlayer.js"></script> 
       <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/wmvplayer.js"></script> 
      </head> 
       <body onLoad="javascript: GlobalReady();"> 
       <div id="container"> 
       <div id="header"> 
       </div> 
       </div> 
       </body> 
       </html> 

這是什麼,我想實現有點過。

我不是什麼正規表達專家;甚至用戶,我認爲我可以以這種方式實現這一目標,但不知道如何去做。

實際上,我的問題是這樣的;如果您一次只打印一行,您會如何正確地格式化(以編程方式)?是否有一個庫可以識別單行上的所有元素,而不管它們與後面的元素有什麼關係?

如果不是,我相信我會寫一個新的類來處理這個問題。

我想實現這樣的事:提前

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" /> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Your Sitename - Module - Index</title> 
    <link rel="stylesheet" href="layout/layout/default/css/styles.css" type="text/css" /> 
    <link rel="stylesheet" href="php/plugins/MoviePlayer/windows/IE/Silverlight/css/silverlight.css" type="text/css" /> 
    <script type="text/javascript" src="js/Cookies.js"></script> 
    <script type="text/javascript" src="js/GlobalReady.js"></script> 
    <script type="text/javascript" src="js/PluginDetection.js"></script> 
    <script type="text/javascript" src="js/Silverlight.js"></script> 
    <script type="text/javascript" src="js/jquery-1.2.6.min.js"></script> 
    <script type="text/javascript" src="js/jquery.flow.1.2.js"></script> 
    <script type="text/javascript" src="layout/layout/default/js/LayoutInit.js"></script> 
    <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/SLPlayer.js"></script> 
    <script type="text/javascript" src="php/plugins/MoviePlayer/windows/IE/Silverlight/js/wmvplayer.js"></script> 
</head> 
<body> 
</body> 
</html> 

感謝。

+0

正在格式化所有內容嗎?如果是這樣,我會使用HTML_TIDY。 – alexn

+0

你怎麼得到這樣的代碼?什麼是它產生的? –

+0

一次格式化所有內容不是一個選項,謝謝你的提問。現在我一行一行地瀏覽我的'最終'輸出,並且在遇到內容中的PHP時,我將它彙總並評估它。無論何時我在內容文件中打印或不打印,我當前都會引用一個跟蹤縮進的'layout-> writeline'方法;只是不那麼神祕。 – DigitalJedi805

回答

2

加載幾個文件,將它們連接成一個字符串,並使用tidy來格式化它們。

但是,這很可能是生成HTML的代碼的問題,應該修復而不是輸出格式錯誤的代碼並在以後修復。

+0

雖然這是一個很好的建議,我有可能在我的輸出中間執行'writeline',I.E.'加載佈局,插入內容,開始打印,評估內容中的PHP',並且我希望此代碼格式化出來;這意味着我應該引用我的'Layout-> WriteLine',用於所有寫入方法(甚至在我的內容文件中)。這也意味着它需要保持一個記錄我有多深的記錄,這就是爲什麼我現在要找出關鍵的「短語」。 – DigitalJedi805

+0

@ DigitalJedi805:看[輸出緩衝控制](http://php.net/manual/en/book.outcontrol.php) –

+0

可能非常有用。謝謝,我必須嘗試一下。 – DigitalJedi805