有没有办法在PHP函数中返回HTML?(无需将返回值构建为字符串)

2022-08-30 08:24:07

我有一个PHP函数,我用它来输出一个标准的HTML块。它目前看起来像这样:

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

我想返回(而不是回显)函数中的HTML。有没有办法在不构建字符串中的HTML(上面)的情况下做到这一点?


答案 1

您可以使用支持变量插值的heredoc,使其看起来相当整洁:

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

但请密切注意手册中的警告 - 关闭行不得包含任何空格,因此不能缩进。


答案 2

是的,有:您可以使用ob_start捕获ed文本:echo

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

推荐