[英]Can I configure PHP to automatically format the HTML it generates?
例如…
這個PHP碼
<?php
echo '<html>';
echo '<body>';
echo '<h1>Header One</h1>';
echo '<p>Hello World!</p>';
echo '</body>';
echo '</html>';
?>
生成這個 HTML 標記
<html><body><h1>Header One</h1><p>Hello World!</p></body></html>
是否有任何函數、庫或配置選項可以使 PHP 根據 output 中生成的 html 標簽的嵌套自動應用一些簡單的格式(換行符和縮進)? 所以會產生這樣的東西......
<html>
<body>
<h1>Header One</h1>
<p>Hello World!</p>
</body>
</html>
您可以將 html 放入 PHP 腳本中,而無需回顯它。 您可能還想尋找像smarty這樣的 PHP 模板引擎,這樣您就可以將視圖與邏輯分開。
我更喜歡使用heredoc 字符串並自己格式化/縮進 HTML。 在 PHP 代碼中混合 HTML 字符串很快會導致代碼不可讀、不可維護。 這種方法的一些優點:
最好將 PHP 代碼盡可能多地與 HTML 分開,無論這意味着使用模板引擎還是將所有代碼放在所有 HTML 之前。但是,仍然有一些時候最容易混合 PHP 和 HTML .
這是一個例子:
<?php
$text = 'Hello World!';
echo <<<HTML
<html>
<body>
<h1>Header One, with some '"quotes"'</h1>
<p>$text</p>
</body>
</html>
HTML;
?>
如果我對你的問題的理解是正確的,你想要漂亮地打印 HTML output。
這可以通過后處理 PHP 腳本的 output 來完成。 通過使用 PHP 的 output 處理功能結合整潔的擴展文檔:
ob_start('ob_tidyhandler');
Tidy 是專門用於清理 HTML 代碼、更改縮進等的擴展。但這不是唯一的方法。
另一種選擇是將后處理任務委托給網絡服務器,例如Apache HTTP Server Docs中的 output 過濾器。
...或者您可以使用“<<<”運算符,您可以在其中自行設置格式:
<?php
echo <<<DATA
<html>
<body>
<h1>Header One</h1>
<p>Hello World!</p>
</body>
</html>
DATA;
你可以這樣做(我的偏好):
<html>
<body>
<h1>Header One</h1>
<p>Hello World!</p>
<?php echo '<p>Hello Hello!</p>'; ?>
</body>
</html>
要么:
<?php
$html = '<html><body><h1>Header One</h1><p>Hello World!</p></body></html>';
$tidy = new tidy();
$tidy->parseString($html, array('indent'=> true,'output-xhtml'=> true), 'utf8');
$tidy->cleanRepair();
echo $tidy;
?>";
...將打印:
<html>
<body>
<h1>Header One</h1>
<p>Hello World!</p>
</body>
</html>
如果下面的代碼看起來對生成 html 和 php 有用,試試這個庫https://github.com/raftalks/Form
Html::make('div', function($html))
{
$html->table(function($table)
{
$table->thead(function($table)
{
$table->tr(function($tr)
{
$tr->th('item');
$tr->th('category');
});
});
$table->tr(function($tr)
{
$tr->td()->ng_bind('item.name','ng-bind');
$tr->td()->ng_bind('item.category','ng-bind');
$tr->setNgRepeat('item in list','ng-repeat'); //using second parameter to force the attribute name.
});
$table->setClass('table');
});
$html->setClass('tableContainer');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.