我正在使用下面的代码获取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;
}
}
我知道这不是“问题”,但是如果可以保留我想要的正确缩进代码,谢谢。
答案 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!