有没有更好的方法来编写PHP中的HTML字符串?

2022-08-30 18:23:17

我发现自己在PHP中编写了很多返回HTML代码的函数。它们可能看起来像这样:

function html_site_head()
{
    return
        "
            <div id=\"site_header\">
                <div id=\"site_header_inner\">
                    <div id=\"site_header_logo\"></div>

                    <div id=\"site_header_countdown\">BARE XX DAGER IGJEN</div>
                </div>
            </div>
        ";
}

现在我可以发誓,我已经看到了用PHP编写长字符串的更好方法。我喜欢python的制作方式:

return """
    <div id="site_header">
        <div id="site_header_inner">
            <div id="site_header_logo"></div>

            <div id="site_header_countdown">BARE XX DAGER IGJEN</div>
        </div>
    </div>
"""

因为您不必转义引号。另一种方法是使用单引号,但这意味着不要直接在字符串中使用PHP变量。我发誓我在PHP中见过这样的东西:

return <<<
    <div id="site_header">
        <div id="site_header_inner">
            <div id="site_header_logo"></div>

            <div id="site_header_countdown">BARE XX DAGER IGJEN</div>
        </div>
    </div>

或类似的东西。有人可以刷新我对此的记忆吗?

谢谢


答案 1

PHP知道几种语法来声明字符串

因此,您不必使用双引号本身。


答案 2

如果您需要一个可用于将HTML存储到字符串中的方法,这就是执行此操作的方法。

我不会使用任何其他建议的方法,哈哈,我会使用输出缓冲区。这些其他方法看起来都非常肮脏(因为在规模上会有很多特殊字符飞来飞去)......因此,冒着冒犯某人的风险,我只想说出我喜欢自己的方式的原因。

如果您像我一样使用输出缓冲区...

使用IDE时,您仍然可以在HTML和PHP之间获得很好的智能帮助,并且仍然可以快速编码出通用的DOM对象。

查看代码时,它看起来更具人类可读性。

HTML代码可以在其DOM就绪状态下传递,而不是作为字符串传递,该字符串最终需要解析并最终创建为DOM就绪状态。

当使用HTML作为字符串方法时,尝试使用各种字符串函数搜索和替换方法来在运行时更改一些代码可能会变得非常粗糙。例如,在大量其他HTML元素字符串中查找标签可能令人生畏,尤其是在尝试在标签之间查找内容时...<img>

我会像这样使用输出缓冲流...

ob_start();
?>
    <div id="site_header">
        <div id="site_header_inner">
            <div id="site_header_logo"><?php echo $PhpVar; ?></div>
            <div id="site_header_countdown">BARE XX DAGER IGJEN</div>
        </div>
    </div>
<?php
$output = ob_get_clean();
ob_flush();

return $output; OR return echo $output

推荐