PHP循环挂起/穿插/穿过HTML

时间:2010-03-12 04:32:58

标签: php html loops

我无法弄清楚如何说出我正在谈论的内容,这是我被困的主要原因。在PHP中,我经常看到像这样的代码

html
<?php
   language construct that uses brackets {
       some code;
?>
more html
<?php
       some more code;
    }
?>
rest of html

这有什么名字吗?看过这个让我试一试,所以这里是一个具体的例子,其行为对我没有意义

<div id="content">
<ul id="nav">
<?php
    $path = 'content';
    $dir = dir($path);
    while(false !== ($file = $dir->read())) {
        if(preg_match('/.+\.txt/i', $file)) {
            echo "<li class=\"$file\">$file</li>";
?>
</ul>
<?php
            echo "<p class=\"$file\">" . file_get_contents($path . '/' . $file) . '</p>';
        }
    }
?>
</div>

大概输出<div><ul><li></li></ul><li></li><p></p>...</div>而不是<div><ul><li></li>...</ul><p></p>...</div>,这是我认为会发生的事情以及我想要发生的事情。为了更清楚,我希望<li>内的<ul><p>内的<div>。是的,我知道有一个简单的解决方案,但我想知道是否有办法用我正在寻找名称的技术来做到这一点。

1 个答案:

答案 0 :(得分:3)

在这里添加一些内容:

如果您正在使用PHP循环进行模板化,那么还有另一种语法可以帮助您避免与缩进混淆以及哪些 - 括号匹配 - 其中:

<?php
    foreach($items as $item):
?>
<b>item: </b> <?php echo $item; ?> <br />
<?php
    endforeach;
?>

这可能过于简单了,但实际上你不应该在模板中使用比这更复杂的东西。像$items变量和你需要的任何东西应该由包含模板的代码设置,而不是在模板本身。