php和html的包含和解释顺序

时间:2015-01-20 19:58:38

标签: php html include

我正在尝试根据某些选项在页面上显示不同的内容。

另外,我试图避免对所有html输出使用php echo。

我意外地想出了以下解决方案,现在我对它的实际工作方式感到困惑。

  

test.php的

<?php
    function get_content() {
        $page = 0;

        if($page == 0)
            include('page0.php');
        else
            include('page1.php');
    }
?>
<html>
    <body>
        <?php echo get_content() ?>
    </body>
</html>
  

page0.php

<?php
    $link = "http://www.google.ca";
    $name = "GOOGLE";
?>
<a href="<?= $link ?>"> <?= $name ?> </a>
  

page1.php中

<?php
    $link = "http://www.yahoo.ca";
    $name = "YAHOO";
?>
<a href="<?= $link ?>"> <?= $name ?> </a>

似乎php解释器在到达下一行时最终会将html标记包含到<?php ?>块中,但不知何故,此代码有效,输出的html有效。

include('page0.php');

有人能解释一下究竟发生了什么吗?

1 个答案:

答案 0 :(得分:2)

  

当包含文件时,解析将退出PHP模式并进入HTML   模式在目标文件的开头,然后再次恢复   结束。出于这个原因,目标文件中的任何代码都应该是   作为PHP代码执行必须包含在有效的PHP开始和结束中   标签

来自PHP manual, include function