我知道这确实是一个主观问题,但对于最佳实践(和可读性),我似乎无法修复格式化长字符串HTML的最佳方法。我通常这样做:
echo '
<div>
<p>Content Inside</p>
<div class="subbox">
<ul>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
</ul>
</div>
</div>
';
但我仍然不喜欢结果,特别是如果它出现在一大块代码的中间。它只是感觉很乱。
答案 0 :(得分:9)
您可以跳出PHP并直接输入HTML:
<?php $var = "foo"; ?>
<div>
<ul>
<li>Foo</li>
</ul>
</div>
<?php $foo = "var"; ?>
如果您所做的只是回音/打印,我认为这更清洁。此外,您不需要在HTML本身内运行并转义单引号/双引号。
如果您需要将HTML存储在变量中,可以使用HEREDOC:
$str = <<<EOD
<div>
<ul>
<li>Foo</li>
</ul>
</div>
EOD;
答案 1 :(得分:3)
为什么不在PHP中嵌入PHP?这就是PHP最初设计用于工作的方式。
// PHP goes here
?>
<div>
<p>Content Inside</p>
<div class="subbox">
<ul>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
</ul>
</div>
</div>
<?php
// More PHP here
答案 2 :(得分:3)
旧派Perl风格heredoc也有效:
echo <<<EOL
<div>
<p>Content Inside</p>
<div class="subbox">
<ul>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
</ul>
</div>
</div>
EOL;
使用多个<?php ?>
块更简洁,但是如果你在类定义中,那么heredoc可能不那么笨拙(尽管从类定义中打印HTML只不过是尴尬)。
答案 3 :(得分:2)
我会这样做:
echo '<div>
<p>Content Inside</p>
<div class="subbox">
<ul>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
<li>etc.</li>
</ul>
</div>
</div>';
答案 4 :(得分:2)
我更喜欢像Code Igniter这样的MVC架构,用于将表示与逻辑分离。基本上,所有模板都是单独存储的,您可以使用here所述的PHP备用语法结构来格式化HTML。
答案 5 :(得分:1)
最好的方法是使用模板系统,您可以将逻辑与演示分开。在模板中,您只有以下内容:
<html>
<body>
<h1><?php echo $title; ?></h1>
<p><?php echo $myparagraph; ?></p>
</body>
</html>