0

たとえば…</p>

この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>

出力で生成されたhtmlタグのネストに基づいて、PHPにいくつかの単純なフォーマット(改行とインデント)を自動的に適用させるための関数、ライブラリ、または構成オプションはありますか?その代わりに、このようなものが生成されます…</ p>

<html>
      <body>
            <h1>Header One</h1>
            <p>Hello World!</p>
      </body>
</html>
4

7 に答える 7

4

SmartySavantPHP SugarVLibなどのテンプレートエンジンを試すことができます。

または、出力処理を使用してコマンドを実行することもできます(これはハックだと思います)。ob_start('ob_tidyhandler');

出力処理の場合、Tidyがインストールまたは有効化されていない可能性があります。通常、インストールする必要のあるパッケージには名前が付けられphp-tidyextension=tidyており、php.iniでコメントを解除する必要があります。

于 2012-04-03T21:13:49.390 に答える
1

エコーすることなく、PHPスクリプトにhtmlを入れることができます。また、 smartyのようなPHPテンプレートエンジンを探して、ビューをロジックから分離できるようにすることもできます。

于 2012-04-03T21:02:15.630 に答える
1

私はヒアドキュメント文字列を使用し、HTMLを自分でフォーマット/インデントすることを好みます。PHPコード内でHTML文字列を混在させると、すぐに読み取り不能で保守不可能なコードになります。この方法のいくつかの利点:

  • 引用符をエスケープする必要はありません。
  • ヒアドキュメント文字列内に変数を配置できます。
  • ループするコードを操作する場合でも、ヒアドキュメント文字列内にHTMLを出力できます。これらの文字列がHTMLの他のブロックに対して適切にインデントされている場合でも、適切なインデントが設定されたHTMLコードを取得できます。
  • HTMLをいつ印刷するかを考え、コード全体に散らばった小さな断片ではなく、ブロック単位で印刷する必要があります(読み取りと保守が非常に困難です)。

テンプレートエンジンを使用する場合でも、すべてのコードをすべてのHTMLの前に配置する場合でも、PHPコードをHTMLからできるだけ分離することをお勧めします。ただし、PHPとHTMLを組み合わせるのが最も簡単な場合もあります。

次に例を示します。

<?php
$text = 'Hello World!';
echo <<<HTML
<html>
    <body>
        <h1>Header One, with some '"quotes"'</h1>
        <p>$text</p>
    </body>
</html>

HTML;
?>
于 2012-04-03T21:05:05.770 に答える
1

私があなたの質問を正しく理解しているなら、あなたはHTML出力をきれいに印刷したいと思うでしょう。

これは、PHPスクリプトの出力を後処理することで実行できます。PHPの出力処理機能をきちんとした拡張ドキュメントと組み合わせて使用​​することによって

ob_start('ob_tidyhandler');

Tidyは、HTMLコードのクリーンアップ、インデントの変更などに特化した拡張機能です。しかし、それが唯一の方法ではありません。

もう1つの方法は、後処理タスクをWebサーバーに委任することです。たとえば、Apache HTTPServerDocsの出力フィルターです。

于 2012-04-03T21:25:48.700 に答える
0

以下のコードがphpでhtmlを生成するのに役立つと思われる場合は、このライブラリを試して ください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');
});
于 2013-01-15T16:47:58.527 に答える
0

...または、「<<<」演算子を使用して、自分でフォーメーションを設定できます。

<?php

echo <<<DATA
<html>
      <body>
            <h1>Header One</h1>
            <p>Hello World!</p>
      </body>
</html>
DATA;
于 2012-04-03T21:04:02.637 に答える
0

あなたはこれを行うことができます(私の好み):

<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>
于 2012-04-03T21:04:14.337 に答える