0

関数.PHP

<?php
    function global_header($page)
    {
        echo "
        <!doctype html>
        <html lang='en'>
        <head>
            <meta charset='utf-8' />
            <title>" . $page . "</title>
            <meta name='description' content='BTI320 Assignment 2' />
        </head>
            <body>
        ";
    }
?>
<?php
    function global_footer()
    {
        echo "
            </body>
        </html>
        ";
    }
?>

ページのソースを chrome/FF で表示すると、次のソースが表示されます。

    <!doctype html>
    <html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title>Add</title>
        <meta name='description' content='BTI320 Assignment 2' />
    </head>
        <body>

        </body>
    </html>

タブ3つ分くらいインデントされています。PHP のストリップ関数か、それを適切に整列できるものはありますか? ページ全体の HTML が台無しになるのは好きではありません。

私の予想される出力は、インデントされないことです。

4

2 に答える 2

1

インデントされた出力を取得する理由は、そのようにエコーしているためです...エコーステートメントからインデントを削除するだけで、それらを取り除くことができます。

<?php
    function global_header($page)
    {
        echo "
<!doctype html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>" . $page . "</title>
<meta name='description' content='BTI320 Assignment 2' />
</head>
<body>";
    }
?>
<?php
    function global_footer()
    {
        echo "
</body>
</html>";
    }
?>

これにより、PHPが追跡しにくくなり、出力は要求どおりになります。

于 2012-11-04T00:26:29.550 に答える
1

テンプレート エンジンの使用を検討してください。HTML 文字列の直接出力は悪い習慣と見なされます。

サードパーティのテンプレート エンジンを使用したくない場合でも、次のような単純化されたテンプレートを利用できます。

page.tplテンプレートファイル:

<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset='utf-8' />
    <title>{{title}}</title>
</head>

<body>

{{body}}

</body>
</html>

PHP:

// Loading HTML code that does not contain any undesired whitespace.
$code = file_get_contents('page.tpl');

// Replacing template variables with their values.
$code = str_replace(
    array(
        '{{title}}',
        '{{body}}'
    ),
    array(
        'Example title',
        'Page body'
    ),
    $code
);

// Outputting resulting HTML code.
echo $code;
于 2012-11-03T20:28:17.970 に答える