如何在一个文本文件中嵌入PHP以便以后包含?

时间:2017-03-01 10:05:57

标签: php html

我有一个通过我的ClassPage创建的简单模板。该类被调用并从文本文件中读取html代码。在导航内部我想要回显一个PHP变量,但我得到的是嵌入式php在浏览器的控制台上注释掉了吗? 我想也许正在阅读的文件没有被服务器处理,这就是为什么php没有被处理?或者我错过了一些非常简单的事情?

下面是代码: ClassPage - > getBody获取名为" superNav.txt"的文件。返回的字符串与所需的HTML头标记等放在一起然后输出。

private function getBody() {
    $text = "";
    if ($this->specialUser) {
        $text .= file_get_contents("Template/superNav.txt");
    } else {
        $text .= file_get_contents("Template/userNav.txt");
    }
    return $text;
}

这是文本文件:

<body>
<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span id="glyph" class="glyphicon glyphicon-th-large"></span></button> 
            <a class="navbar-brand" href="#"><img alt="brand" id="brandLogo" src="Images/logo.png"></a> 
            <p id="navbarText" class="navbar-text">Webmin</p>
        </div>
        <div class="collapse navbar-collapse" id="myNavbar">
            <ul class="nav navbar-nav">
                <li><a href="welcome-super.php">Home</a></li>
                <li><a href="view-rota.php">Rota</a></li>
                <li><a href="rota-administration.php">Rota Admin</a></li>
                <li><a href="user-administration.html">User Admin</a></li>
                <li><a href="rota-archive.php">Archive</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span><?php echo $user->getName(); ?></a></li>
                <li><a href="#"><span class="glyphicon glyphicon-log-out"></span> Log Out</a></li>
            </ul>
        </div>
    </div>
</nav>

这是给我一个问题的一句话:

<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span><?php echo $user->getName(); ?></a></li>

php没有显示到屏幕上,浏览器控制台显示代码已被注释。

欢迎任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:0)

首先从.txt文件中获取内容,然后执行以下操作:

 $name = $user->getName();
 $text = file_get_contents("Template/superNav.txt");
 $text = str_replace('USERNAME', $name, $message);
 $text$message = str_replace('logo_url', $base_url, $message);

并在你的.txt文件中用一些常量替换php值。

喜欢这个

<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span>USERNAME</a></li>

所以在这里你可以看到我们用动态值替换了USERNAME的值。希望它有所帮助!!!

答案 1 :(得分:0)

正如您所发现的,

file_get_contents不会执行php。

相反,您可以使用输出缓冲和include。 您还需要确保$usergetBody方法的范围内,因为include从调用块中获取其范围。

在这个例子中,我使用了一个组合方法来说明:

private function getBody() 
{
    //create local user variable somehow
    $user = $this->getUser();
    //start buffer
    ob_start();

    if ($this->specialUser) {
        include "Template/superNav.txt";
    } else {
        include "Template/userNav.txt";
    }
    //return contents of buffer as string
    return ob_get_clean();
}