0

我正在完成我的 PHP 课程作业。

我不明白的问题是,当我对所有部分实际使用该功能时,我会不断收到额外的行。

喜欢在我的index.php页面上

<?php include('library.php') ?>
<?php top_header(); ?>

这是我的功能top_header代码library.php

<?php function top_header(){ ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head><title></title></head>
<body>
<?php } ?>

因此,当我使用验证检查我的代码时,它说 xml 文档类型必须在第一行,当我检查我的源代码时,我发现它不在第一行。我现在已经删除并重新创建了两次页面(首先它在第 4 行,现在它是第 2 行)

在此处输入图像描述

4

6 回答 6

2

前两行之间有一个换行符:

<?php include('library.php') ?>
<?php top_header(); ?>

而这个换行符实际上生成了第一个空行!

使用以下内容:

<?php
    include('library.php');
    top_header();
?>

一切正常:-)

于 2012-06-14T23:04:10.760 回答
0

可能是 library.php 中的某个地方正在呼应返回行。

于 2012-06-14T23:01:37.047 回答
0

<?php include('library.php') ?>一定是在输出什么。检查那个。

于 2012-06-14T23:02:30.523 回答
0

<?php ?>这些块之间有一个换行符:

<?php include('library.php') ?>
<?php top_header(); ?>

请记住,PHP 会在 PHP 块的位置准确输出内容。休息保持不变。

于 2012-06-14T23:04:10.323 回答
0

首先,如果您要输出 HTML,则不需要:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

其次,当你跳出一个<?php ?>代码块时,PHP标签之外的任何东西都会被输出。所以,你应该摆脱所有这些退出/重新进入,因为那里可能有空格。

第三,您不需要关闭?>,因为之后可能会有换行符/空格。所以,省略它是合法的,可以避免你犯这个错误。

<?php function top_header(){
    // echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head><title></title></head>
<body>';
}
于 2012-06-14T23:04:34.793 回答
0

一个典型的原因是:结束标签后的行尾字符。这在编辑器中甚至可能不明显,但如果您在代码中的 ?> 之后有回车,则很容易出现新行。

简单的补救措施:只是不要关闭 PHP 标记。没有什么不好的,而且多余的行被 PHP 解释器吃掉了。

顺便说一句,如果您在代码之前出现空行,那就更糟了,因为您将失去发送新标头的能力。有趣的调试时间,我可以告诉你:-)

于 2012-06-14T23:04:36.313 回答