Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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中的DOCTYPE和HEAD加载错误_Php - Fatal编程技术网

PHP中的DOCTYPE和HEAD加载错误

PHP中的DOCTYPE和HEAD加载错误,php,Php,下面是我的索引页面$页面在顶部定义,然后页面的各个部分(页眉、菜单、正文和页脚)在底部更改 我遇到的问题是,DOCTYPE和数据没有在加载剩余页面内容之前先加载。这会导致浏览器在“怪癖”模式下运行 让我知道我是否/如何能使这个问题更清楚 提前感谢您的时间 更新: 我删除了所有PHP标记,并将require('includes/…')设置为变量,以消除页面负载。DOCTYPE仍然拒绝加载。下面的代码反映了这些变化 更新2: DOCTYPE现在直接与$page变量对接,消除了所有空白。另外,当在浏览

下面是我的索引页面$页面在顶部定义,然后页面的各个部分(页眉、菜单、正文和页脚)在底部更改

我遇到的问题是,DOCTYPE和数据没有在加载剩余页面内容之前先加载。这会导致浏览器在“怪癖”模式下运行

让我知道我是否/如何能使这个问题更清楚

提前感谢您的时间

更新: 我删除了所有PHP标记,并将require('includes/…')设置为变量,以消除页面负载。DOCTYPE仍然拒绝加载。下面的代码反映了这些变化

更新2: DOCTYPE现在直接与$page变量对接,消除了所有空白。另外,当在浏览器中查看时,我注意到显示了,尽管开口没有显示。所有样式表和其他内容都在页面的内部呈现

解决方案: 正如许多人指出的那样,解决方案可能是多个因素(例如DOCTYPE之前生成的换行符),但我只能肯定地说,最终的答案如下: 在$page中调用的外部文档未设置为变量。因此,它们似乎是在页面之前加载的。一旦我将外部includes/requires设置为相关文档中的变量,DOCTYPE就会正确加载。我非常感谢你们抽出时间

<?
require('includes/functions/get_content.php');
$header=require('includes/header.php');
$footer=require('includes/footer.php');

$page='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Website Name</title>

<link rel="stylesheet" href="/css/primary_layout.css" type="text/css" charset="utf-8" />
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.0.min.js" type="text/javascript"></script>
</head>

<body>
<div id="bodyContainer">                
%HEADERS%

%MENU%

<div id="bodyContentPane" role="main">
%BODY%
</div> <!-- Close bodyContentPane -->
%FOOTER%
</div>
</body>
</html>';

//############### LOAD BODY CONTENT and SET CATEGORY ###############
$p = $_GET['p'];
switch ($p){ 
case "port-a-cool":
$filename='includes/content1.html';
$data=get_content($filename);
$product_category = '1';
$body=$data;
break;

case "radiant-heaters":
$filename='includes/content2.html';
$data=get_content($filename); 
$product_category = '2';
$body=$data;
break;

default:
$body= include('includes/index.php');
break;
}

//############### DEFINE CONTENT TO LOAD BY CATEGORY ###############
$i = $product_category;
switch ($i){
case "1":
$menu=include('includes/menus/content1.php');
break;
case "2":
$menu=include('includes/menus/content2.php');
break;  }

// ############### CHECK FOR UNDEFINED SUB MENU ###############
if ($menu=="")
$menu = include ('includes/menus/default.php');

$page=str_replace('%HEADER%',$header,$page); 
$page=str_replace('%MENU%',$menu,$page); 
$page=str_replace('%BODY%',$body,$page);
$page=str_replace('%FOOTER%',$footer,$page); 
echo $page;
?>

这可能是因为在页面内容前面输出了大量空白

如果查看页面的源代码,应该会看到doctype之前输出的几行空行

由于PHP标记之间的换行符,换行符在页面内容之前获得输出

例如:

<?
require('includes/functions/get_content.php');
require('includes/header.php');
require('includes/footer.php');
?>

<?
page='


这可能是因为页面内容前面有很多空白输出

如果查看页面的源代码,应该会看到doctype之前输出的几行空行

由于PHP标记之间的换行符,换行符在页面内容之前获得输出

例如:

<?
require('includes/functions/get_content.php');
require('includes/header.php');
require('includes/footer.php');
?>

<?
page='


确保所需或包含的任何文件都不会向浏览器输出任何内容。如果是,它们将在声明doctype之前输出,并将强制进入怪癖模式。

确保您需要或包含的任何文件都不会向浏览器输出任何内容。如果是,它们将在声明doctype之前输出,并将强制进入怪癖模式。

在doctype之前仍有空格,请参见此处

$page='
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$page='1!'
删除空格

$page='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$page='1!'

注意:对于
$header=require('includes/header.php')
要返回内容,您必须有类似于
返回“内容”的内容在包含的文件中。

您的doctype前仍有空格,请单击此处

$page='
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$page='1!'
删除空格

$page='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$page='1!'

注意:对于
$header=require('includes/header.php')
要返回内容,您必须有类似于
返回“内容”的内容在包含的文件中。

get_content.php、header.php或footer.php是否呈现任何内容?在这种情况下,您必须在需要()或包含()这些文件之前呈现我们的doctype和head。为什么您有一个
$page
变量???您有无数
?>@Maritim-Man,我不知道我在想什么。我想你是对的。这种方式已经用了太长时间了…get_content只是一个函数,但是header.php和footer.php确实有内容。我现在就试试。@unsertive-$page允许我在全局级别设置页面样式,并通过底部的str_replace将内容拉入其中。get_content.php、header.php或footer.php是否呈现任何内容?在这种情况下,您必须在需要()或包含()这些文件之前呈现我们的doctype和head。为什么您有一个
$page
变量???您有无数
?>@Maritim-Man,我不知道我在想什么。我想你是对的。这种方式已经用了太长时间了…get_content只是一个函数,但是header.php和footer.php确实有内容。我现在就试试。@unsertive-The$页面允许我在全局级别上设置页面样式,并通过底部的str_替换将内容拉入其中。我不认为这会导致doctype无法设置。换行符不被解析为html@drew010-哦,穆萨就是这个意思^^。打开和关闭PHP标记不会生成空格,而是在它们之间生成HTML。伙计,既然你已经指出了,我觉得这样做有点傻。我一直在努力保持我的代码干净,易于检查!我想投你的票,但现在还不能。谢谢你@在某些浏览器(特别是IE)中,doctype之前的任何输出(包括空格)都会触发怪癖模式,因此doctype必须位于文档的最开头。@drew010-根据问题中的修订代码,您是否碰巧看到其他内容?很抱歉打扰您,但是我已经想不出是什么导致了问题。现在看起来好多了,但是如果您查看页面的源代码,是否在doctype之前还有任何东西或者输出有任何奇怪的地方?我不认为这会导致doctype无法设置。换行符不被解析为html@drew010-哦,穆萨就是这个意思^^。打开和关闭PHP标记不会生成空格,而是在它们之间生成HTML。伙计,既然你已经指出了,我觉得这样做有点傻。我一直在努力保持我的代码干净,易于检查!我想投你的票,但现在还不能。谢谢你@在某些浏览器(特别是IE)中,doctype之前的任何输出(包括空格)都将触发怪癖模式,因此doctype必须位于文档的最开头。@drew01