我正在尝试制作一个基于模板的系统来传递内容,但我遇到了一个我似乎无法解决的问题。当我试图回显出包含数据的变量时,它会在我的html的错误部分输出。
下面是'newstuff.php',这是我要在浏览器上执行的页面,有问题的变量是$php $head $content
。
<?php
$php = include "templates/content/newstuff/phpCode.php";
$head = include "templates/content/newstuff/head.html";
$content = include "templates/content/newstuff/content.php";
include realpath(dirname(__FILE__)).'/templates/templateMain.php';
?>
下面是'tempalteMain.php'这是我的临时工。请注意$php $head $content
的回显位置。
<?php
echo $php;
?>
<!DOCTYPE html>
<html>
<head>
<?php echo $head; ?>
</head>
<body class="body1" onload="inputBlur2()">
<div class="borderLine"></div>
<div class="banner"></div>
<div class="mainContent1" >
<div class="header1" >
<div class="headerContainer" >
<ul class="navList1">
<li><a id = "B0" href="index.php">New Stuff</a></li>
<li><a id = "B1" href="MainPage.php">Products</a></li>
<li><a id = "B2" href="ProjectsPage.php">Projects</a></li>
<li><a id = "B3" href="AOrdering.php">About Ordering</a></li>
<li><a id = "B4" href="ContactMe.php">Contact Us</a></li>
<li><a id = "B5" href="FAQPage.php">FAQ</a></li>
<li><a id = "B6" href="SCart.php">My Cart</a></li>
</ul>
</div>
</div>
<div class="content1">
<?php echo $content; ?>
</div>
</div>
</body>
</html>
下面是'head.html',它提供了由$head
PHP变量提供的代码。
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/../StylePR.css">
<title>KickUp Electronics</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
下面是'content.php',它提供了由$content
PHP变量提供的代码。
<p>Welcome to the new stuff page!!!</p>
最后,这是从chrome DOM编辑器获取的页面源。请注意来自content.php的信息的位置是错误的,并且有一些奇怪的'1'被回显(同样,在查看页面源时,head.html中的信息被放置在html标记之外)。
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/../StylePR.css">
<title>KickUp Electronics</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body class="body1" onload="inputBlur2()">
<p>Welcome to the new stuff page!!!</p> <!--Wrong Location!-->
1
1
<div class="borderLine"></div>
<div class="banner"></div>
<div class="mainContent1">
<div class="header1">
<div class="headerContainer">
<ul class="navList1">
<li><a id="B0" href="index.php">New Stuff</a></li>
<li><a id="B1" href="MainPage.php">Products</a></li>
<li><a id="B2" href="ProjectsPage.php">Projects</a></li>
<li><a id="B3" href="AOrdering.php">About Ordering</a></li>
<li><a id="B4" href="ContactMe.php">Contact Us</a></li>
<li><a id="B5" href="FAQPage.php">FAQ</a></li>
<li><a id="B6" href="SCart.php">My Cart</a></li>
</ul>
</div>
</div>
<div class="content1">
1 </div>
</div>
</body></html>
我多次尝试搜索无效的解决方案。这是在html完全加载之前执行echo的问题吗?任何帮助将非常感谢!
答案 0 :(得分:2)
您使用包含错误。
$php = include "templates/content/newstuff/phpCode.php";
立即输出该文件的输出,并将$php
设置为1
(即&#34;它有效!&#34;)。
处理退货:在失败时包含退货
FALSE
并发出警告。除非被包含文件覆盖,否则成功包括返回1
。 - http://php.net/manual/en/function.include.php
您可以使用output buffering来捕获输出,但更好的解决方案可能是将include
调用直接转移到templateMain.php
。