Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在文本文件中嵌入PHP,以便以后包含?_Php_Html - Fatal编程技术网

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

如何在文本文件中嵌入PHP,以便以后包含?,php,html,Php,Html,我通过我的类页面创建了一个简单的模板。该类被调用并从文本文件中读取html代码。在导航中,我想回显一个PHP变量,但我得到的只是浏览器控制台上的嵌入式PHP注释? 我在想,可能读取的文件没有被服务器处理,这就是为什么php没有被处理的原因?或者我错过了一些非常简单的事情 代码如下: ClassPage->getBody,获取名为“superNav.txt”的文件。返回的字符串与所需的HTML头标记等放在一起,然后输出 private function getBody() { $text

我通过我的类页面创建了一个简单的模板。该类被调用并从文本文件中读取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>

Webmin

这句话给了我一个问题:

<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span><?php echo $user->getName(); ?></a></li>
  • php不会显示在屏幕上,浏览器控制台显示代码已被注释


    欢迎任何帮助。提前谢谢

    为此,首先从
    .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
    的值替换为动态值。希望对你有帮助

    file\u get\u contents
    不会执行php,正如您所发现的那样

    相反,您可以使用输出缓冲和
    include
    。 您还需要确保
    $user
    getBody
    方法的作用域中,因为
    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();
    }
    

    如果要计算文件中的代码,可以使用
    include()
    和。但是您仍然有一个问题,因为您包含的文件中没有定义
    $user
    。在文件中放置占位符并使用
    str\u replace(MY\u placeholder,$user->getName(),$text)
    加载带有
    file\u get\u contents()的文件后,可能会更简单。如何调用
    getBody()
    ?如果没有对插入文件的内容进行任何更改,则只需使用
    include()
    。php命令将自动执行。不需要缓冲区。