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

Hub*_*bro 19 php string

我发现自己在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>
        ";
}
Run Code Online (Sandbox Code Playgroud)

现在我可以发誓我已经看到了用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>
"""
Run Code Online (Sandbox Code Playgroud)

因为你不必逃避引号.另一种方法是使用单引号,但这意味着不要在字符串中直接使用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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Gum*_*mbo 17

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

所以你不必使用双引号本身.


Gor*_*fex 11

如果您需要一种可用于将HTML存储到字符串中的方法,则可以使用此方法.

我不会使用任何其他建议的方法大声笑,我会使用输出缓冲区.这些其他方法都看起来很脏(因为大规模会有很多特殊角色飞来飞去)......所以冒着冒犯别人的风险,我只会说出我喜欢自己的方式的原因.

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

使用IDE时,您仍然可以获得很好的智能帮助,将HTML和PHP彼此分开,并且仍然可以快速编写通用DOM对象.

查看代码时,它看起来更具人性化.

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

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

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

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
Run Code Online (Sandbox Code Playgroud)


cod*_*ict 7

它被称为heredoc语法:

return <<< END
<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>
END;
Run Code Online (Sandbox Code Playgroud)