Php 保留带有文件内容的缩进

Php 保留带有文件内容的缩进,php,Php,我使用下面的代码获取html代码,它可以正常工作,唯一的问题是缩进的代码没有保留 例如,获取的代码如下所示: <div> data </div 数据 只是一个随机猜测:在将文件内容输出到客户端之前,代码中可能有几个空格的输出 为了避免这种情况,您需要清理输出。您可以在这个getFile()函数中执行此操作: function getFile($file) { if (file_exists($file)) { $file = file

我使用下面的代码获取html代码,它可以正常工作,唯一的问题是缩进的代码没有保留

例如,获取的代码如下所示:

    <div>
    data
</div

数据

只是一个随机猜测:在将文件内容输出到客户端之前,代码中可能有几个空格的输出

为了避免这种情况,您需要清理输出。您可以在这个
getFile()函数中执行此操作:

function getFile($file)
{
    if (file_exists($file)) {
        $file = file_get_contents($file);
        ob_clean(); // <-- clean the output if any happened before
        return $file;
    } else {
        return false;
    }
}

您当前的代码确实保留了缩进,如果您想要更多的缩进,那么这只是一个使用您的代码的示例。可以使用如图所示的空格或选项卡。 使用
$indent
作为要添加的空格数调用它:

function getFile($file, $indent=false)
{
    if (file_exists($file)) {
        if($indent) {
            $i = (str_repeat(' ', $indent);
            $file = $i . implode($i, file($file));
        } else {
            $file = file_get_contents($file);
        }
        return $file;
    } else {
        return false;
    }
}
另一种方法是创建一个
indent()
函数,然后在上面的代码中调用它:

$file = indent(file_get_contents($file), 4);

这可能是一个内容类型编码问题
file\u get\u contents
将在设置
default\u charset
时使用
php.ini
中配置的默认字符集读取文件内容,默认设置为
UTF-8

我们可以使用来确保它与默认字符集相同,如果不是,我们可以选择将其转换为检测到的编码


它已经被回答。@Scamtex-很抱歉,它没有,“header(“Content Type:text/plain”)”将代码更改为文本,这不是我想要的。额外的4个空格来自某个地方,你只需要找到它。可能是在输出它的地方或之前。@Abracadver-我刚刚快速查看了一下,你的右边,我的括号前面有四个空格{html}。我希望括号内的代码在四个空格缩进4个空格后都会缩进。不知道你期望什么。
...
ob_clean();
echo getFile($file);
function getFile($file, $indent=false)
{
    if (file_exists($file)) {
        if($indent) {
            $i = (str_repeat(' ', $indent);
            $file = $i . implode($i, file($file));
        } else {
            $file = file_get_contents($file);
        }
        return $file;
    } else {
        return false;
    }
}
$file = indent(file_get_contents($file), 4);