2

我使用 php include 来检索我的站点模板及其工作,但它在输出之前显示了两个双引号。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
require_once 'common.php';
require_once 'load.php';
?>
</body>
</html>

通用.php。(如果我只包含 common.php 会产生相同的结果,所以我不会在此处粘贴我的 load.php)

<?php
if (!defined('ABSPATH'))
    define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up global vars and included files. */
define('INC', 'includes/');
define('FUNCS', 'functions/');
define('CLS', 'classes/');
define('MODS', 'modules/');
#paths

#Initialing
// include require files to set initial
require_once(ABSPATH . 'configs.php');
function openDB() {
    global $dbCon;

    require_once(ABSPATH . CLS . '/class-db.php' );

    if (isset($dbCon))
        return;

    $dbCon = new db(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
openDB();
?>

即使 common.php 为空,引号仍然存在:/

和输出:

<!DOCTYPE html>
<html>
<head>
<body>
" <!-- this double quote should not be here -->
" <!-- this double quote should not be here -->
<div>hello world!</div>
</body>
</html>

所以我在每一页都有一个空白区域。包含文件是否发送任何这样的标题?

4

4 回答 4

2

我认为您在包含的文件之一中的标记之前或之后有一些非 ascii 字符<?php(不需要 common.php 和 load.php 也可能是 configs.php 或 class-db.php),这在您的编辑器中看不到但可见在浏览器中。您可以使用 HEX 编辑器检查您的文件以进行检查,或使用“ob_get_clean”来查找这些符号出现的确切位置。

于 2012-07-15T07:25:13.090 回答
0

添加

<div style='clear:both;'></div>

<?php
require_once 'common.php';
require_once 'load.php';
?>

它仍会显示,但不会影响您的布局

于 2014-06-06T17:56:20.570 回答
0

尤金是对的。
我遇到了同样的问题,在谷歌搜索时来到了这个线程,但没有正确理解它。

然后用不同的关键字搜索了一点,比如“php包括添加空格和换行符”,找到了另一个线程,之后我理解了这个线程的含义。

这也不是一个 php 问题,它主要发生在我们在不同的编辑器之间复制和粘贴代码时,并且由于文档类型在 utf-8 和 ansi 等之间发生了变化,因此以某种方式添加了额外的不可见十六进制数据。

这是使它更正确的网址,在页面末尾找到了解决方案 -
php-require-include-adds-line-break-to-html

希望它有所帮助。

于 2012-10-20T22:38:51.997 回答
0

在notepad++中打开“common.php / load.php”,将编码改为“encod in UTF-8 without BOM”

于 2013-07-20T10:15:36.817 回答