使用file_get_contents保留缩进

时间:2019-03-21 18:00:00

标签: php

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

例如,获取的代码如下:

    <div>
    data
</div

代替

<div>
    data
</div>

php:

<?php

function getFile($file)
{
    if (file_exists($file)) {
        $file = file_get_contents($file);
        return $file;
    } else {
        return false;
    }
}

我知道这不是“问题”,但是如果可以保留我想要的正确缩进代码,谢谢。

3 个答案:

答案 0 :(得分:1)

您当前的代码确实保留缩进,如果您想要更多的缩进,那么这只是使用代码的一个示例。您可以使用显示的空格或制表符。  用$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);

答案 1 :(得分:0)

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

为避免这种情况,您需要清除输出。您可以在此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;
    }
}

在您称之为它的外面,我猜是这样的:

...
ob_clean();
echo getFile($file);

答案 2 :(得分:0)

这可能是内容类型编码问题。 file_get_contents将使用设置为{{1}的php.ini(默认为default_charset)中配置的默认字符集读取文件内容。

我们可以使用mb_detect_encoding来确保它与默认字符集相同,否则,我们可以选择使用mb_convert_encoding将其转换为检测到的编码。

UTF-8

nJoy!