在PHP中输出大块HTML的正确方法

时间:2010-11-25 12:04:09

标签: php

我正在从一本书中学习PHP(没有编程经验)。本书中的示例使用一种奇怪的方式来有条件地输出大块HTML。它关闭条件内的PHP标记,并在输出HTML后重新打开它。我理解(在经过一些努力之后)它是如何工作的,但它似乎是一个狡猾的,不打算使用的,这样的解决方法。

<?php
    if(something == somethingelse) {
        echo "some message";
    }
     else {
?>
<big-block-of-html>
</big-block-of-html>
<?php }
?>

这本书确实介绍了heredoc语法,但从未使用它。有没有正确的方法呢?从PHP中输出HTML似乎更直观。

4 个答案:

答案 0 :(得分:11)

这正是PHP应该如何使用,并且比所有替代品更具可读性,优雅性和稳健性*。我只是想要更好的缩进风格:

<?php
    // normal
    // code
    // here
?>
<?php if ($foo) : ?>

    <div>
        <!-- more HTML -->
    </div>

<?php endif; ?>

*除非您选择像Smarty这样完全无代码的模板......

答案 1 :(得分:1)

考虑在其他文件中隐藏此块。 然后你可以创建这样的函数:

function get_some_big_block_content()
{
    return get_file_contents('./your_big_block.html');
}

然后你可以:

<?php 
    if(something == somethingelse) { 
        echo "some message";
    } 
     else { 
        echo get_some_big_block_content();
    }

?> 

答案 2 :(得分:0)

PHP允许多种方式执行此操作;选择一个主要是一个偏好的问题 - 对于一些人来说,这是最可读的选择,对某些人来说这是一个可怕的黑客。

总之,内联HTML很难以任何形式进行维护 - 如果你在网站上付出了很多努力,可以考虑某种模板系统(例如Smarty)和/或框架(例如Symfony),否则你就是'我会因为试图维护PHP + HTML汤而疯狂。

答案 3 :(得分:-1)

使用

<?php
    if (something == somethingelse) {
        echo "some message";
    }
    else {
        echo "<big-block-of-html>
        </big-block-of-html>";
    }
?>