HTML の標準ブロックを出力するために使用している PHP 関数があります。現在、次のようになっています。
<?php function TestBlockHTML ($replStr) { ?>
<html>
<body><h1> <?php echo ($replStr) ?> </h1>
</html>
<?php } ?>
関数内の HTML を (エコーではなく) 返したい。HTML(上記)を文字列に構築せずにこれを行う方法はありますか?
HTML の標準ブロックを出力するために使用している PHP 関数があります。現在、次のようになっています。
<?php function TestBlockHTML ($replStr) { ?>
<html>
<body><h1> <?php echo ($replStr) ?> </h1>
</html>
<?php } ?>
関数内の HTML を (エコーではなく) 返したい。HTML(上記)を文字列に構築せずにこれを行う方法はありますか?
変数補間をサポートするヒアドキュメントを使用すると、見た目がかなりきれいになります。
function TestBlockHTML ($replStr) {
return <<<HTML
<html>
<body><h1>{$replStr}</h1>
</body>
</html>
HTML;
}
ただし、マニュアルの警告に細心の注意を払ってください。終了行には空白を含めてはならないため、インデントすることはできません。
はい、あります:次をecho
使用してedテキストをキャプチャできますob_start
:
<?php function TestBlockHTML($replStr) {
ob_start(); ?>
<html>
<body><h1><?php echo($replStr) ?></h1>
</html>
<?php
return ob_get_clean();
} ?>
これは大ざっぱな解決策かもしれません。関数の標準的な使用法ではないため、これが悪い考えかどうかを指摘していただければ幸いです。次のように、戻り値を文字列として構築せずに、PHP関数からHTMLを取得することに成功しました。
function noStrings() {
echo ''?>
<div>[Whatever HTML you want]</div>
<?php;
}
関数を「呼び出す」だけです:
noStrings();
そして、次のように出力されます。
<div>[Whatever HTML you want]</div>
このメソッドを使用して、関数内で PHP 変数を定義し、それらを HTML 内でエコーアウトすることもできます。
もう 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;
}
または、これを使用することもできます:
<?
function TestHtml() {
# PUT HERE YOU PHP CODE
?>
<!-- HTML HERE -->
<? } ?>
この関数からコンテンツを取得するには、次を使用します。
<?= file_get_contents(TestHtml()); ?>
それでおしまい :)