PHP 读取文件输出一个缩进


PHP ReadFile Outputs an Indent?

我正在使用一些PHP代码将文本文件导入HTML文档。原因是因为我经常刷新页面,所以文本总是新的。这是我的代码:

<!DOCTYPE html>
<head>
    <meta http-equiv="refresh" content="5">
</head>
<body>
    <xmp>
    <?php
        $date = date("Y-m-d"); 
        $file = "..''chat logs''$date.txt";
        readfile($file);
    ?>
    </xmp>
</body>
</html>

$date.txt文件没有特殊的间距。无缩进。问题是第一行总是有这样的输出:

        [ 00:57:45 ] : <Overlord> Enemy spotted
[ 01:00:51 ] : <ShadowLordGamin> HI 
[ 01:00:58 ] : <ShadowLordGamin> just got the game today :D
[ 01:06:42 ] : <Brazdnt> D: 

有没有办法消除最初的缩进?任何帮助将不胜感激。谢谢。

首先,<xmp>已被弃用并且支持不良。您应该改用<pre>并使用htmlspecialchars()转义文本(这要求您使用 file_get_contents() 而不是 readfile() 来阅读文本)。

(编辑:它不仅被弃用,而且很危险,因为它为跨站点脚本漏洞打开了您的网站。

对于您的问题:<xmp>(和<pre>)从字面上显示开始和结束标记之间的所有字符,包括用于格式化代码的任何空格。您需要确保 html 开始标记和<?php开始标记之间没有空格:

<pre><?php
    $date = date("Y-m-d"); 
    $file = "..''chat logs''$date.txt";
    echo htmlspecialchars(file_get_contents($file));
?></pre>