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