【问题标题】:Order of inclusion and interpretation for php and htmlphp和html的包含顺序和解释
【发布时间】:2015-01-20 19:58:37
【问题描述】:

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

另外,我试图避免对所有 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 标记包含到 &lt;?php ?&gt; 块中,但不知何故,这段代码有效,并且输出的 html 是有效的。

include('page0.php');

有人能解释一下这里到底发生了什么吗?

【问题讨论】:

标签: php html include


【解决方案1】:

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

来自PHP manual, include function

【讨论】:

    猜你喜欢
    • 2011-10-05
    • 2010-11-04
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多