2012-09-13 33 views
1

鑑於我有一個任意複雜的php腳本,運行在apache2 web服務器上,我想檢查這個腳本只輸出有效的xhtml。動態XHTML驗證(PHP輸出)

實現此目的的一種方法是在腳本每次運行時驗證此php腳本的輸出,並將生成的錯誤和警告存儲在mysql數據庫中。

這可能嗎?

謝謝!

編輯:我猜這裏的主要問題是獲取當前腳本的輸出,而不會重寫每個echo調用。

EDIT2:我更喜歡W3C的sgml驗證通過html tidy。

回答

2

你不僅可以檢查,而且修復使用tidy

例常見的錯誤從http://www.php.net/manual/en/tidy.parsestring.php

<?php 
ob_start(); 
?> 

<html> 
    <head> 
    <title>test</title> 
    </head> 
    <body> 
    <p>error<br>another line</i> 
    </body> 
</html> 

<?php 

$buffer = ob_get_clean(); 
$config = array('indent' => TRUE, 
       'output-xhtml' => TRUE, 
       'wrap' => 200); 

$tidy = tidy_parse_string($buffer, $config, 'UTF8'); 

$tidy->cleanRepair(); 
echo $tidy; 
?> 

這將輸出:

<!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> 
    <title> 
     test 
    </title> 
    </head> 
    <body> 
    <p> 
     error<br /> 
     another line 
    </p> 
    </body> 
</html> 
+0

這很好,但我寧願使用w3c sgml解析器而不是整潔。但這已經幫了我很多,謝謝:) –

0

當然是可能的。您必須搜索爲您驗證XHTML標記的程序或服務。


問題實際上是您的應用程序的速度和性能。你一定要緩存輸出!

+0

請問您能更具體些嗎? –

0

本課程將讓你validate output for proper HTML5。您不希望執行此運行時,因爲這會減慢執行時間。相反,創建一組您可以在部署網站之前運行的測試。我個人比較喜歡PHPUnit作爲測試框架。