77

HTML の標準ブロックを出力するために使用している PHP 関数があります。現在、次のようになっています。

<?php function TestBlockHTML ($replStr) { ?>
    <html>
    <body><h1> <?php echo ($replStr) ?> </h1>
    </html>
<?php } ?>

関数内の HTML を (エコーではなく) 返したい。HTML(上記)を文字列に構築せずにこれを行う方法はありますか?

4

8 に答える 8

108

変数補間をサポートするヒアドキュメントを使用すると、見た目がかなりきれいになります。

function TestBlockHTML ($replStr) {
return <<<HTML
    <html>
    <body><h1>{$replStr}</h1>
    </body>
    </html>
HTML;
}

ただし、マニュアルの警告に細心の注意を払ってください。終了行には空白を含めてはならないため、インデントすることはできません。

于 2009-02-09T15:02:13.773 に答える
85

はい、あります:次をecho使用してedテキストをキャプチャできますob_start

<?php function TestBlockHTML($replStr) {
    ob_start(); ?>
    <html>
    <body><h1><?php echo($replStr) ?></h1>
    </html>
<?php
    return ob_get_clean();
} ?>
于 2009-02-09T14:55:23.573 に答える
18

これは大ざっぱな解決策かもしれません。関数の標準的な使用法ではないため、これが悪い考えかどうかを指摘していただければ幸いです。次のように、戻り値を文字列として構築せずに、PHP関数からHTMLを取得することに成功しました。

function noStrings() {
    echo ''?>
        <div>[Whatever HTML you want]</div>
    <?php;
}

関数を「呼び出す」だけです:

noStrings();

そして、次のように出力されます。

<div>[Whatever HTML you want]</div>

このメソッドを使用して、関数内で PHP 変数を定義し、それらを HTML 内でエコーアウトすることもできます。

于 2011-11-13T00:23:13.517 に答える
5

もう 1 つの方法は、file_get_contents()を使用してテンプレート HTML ページを作成することです。

テンプレートページ

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title>$title</title></head>
<body>$content</body>
</html>

PHP 関数

function YOURFUNCTIONNAME($url){

$html_string = file_get_contents($url);
return $html_string;

}
于 2014-02-28T18:38:59.143 に答える
0

または、これを使用することもできます:

<?
function TestHtml() { 
# PUT HERE YOU PHP CODE
?>
<!-- HTML HERE -->

<? } ?>

この関数からコンテンツを取得するには、次を使用します。

<?= file_get_contents(TestHtml()); ?>

それでおしまい :)

于 2018-06-11T18:35:01.643 に答える