我使用PHP使用fgets()
命令读取一个简单的文本文件:
$file = fopen("filename.txt", "r") or exit('oops');
$data = "";
while(!feof($file)) {
$data .= fgets($file) . '<br>';
}
fclose($file);
文本文件在每行的第一个字符前面有前导空格。 fgets()
没有抓住空白区域。知道为什么吗?我确保不对变量使用trim()
。我试过这个,但领先的白色空间仍然没有出现:
$data = str_replace(" ", " ", $data);
不知道从哪里开始。
提前致谢,
道格
更新
如果我将文本转储到文本区域,文本会正确显示,但如果我将其转发到网页则不会。
答案 0 :(得分:0)
尝试使用:
$data = preg_replace('/\s+/', ' ', $data);
fgets
不应修剪空格。
答案 1 :(得分:0)
尝试使用file_get_contents读取文件,它成功读取文件开头的空格。
$data = file_get_contents("xyz.txt");
$data = str_replace(" ","~",$data);
echo $data;
希望这有帮助
答案 2 :(得分:0)
函数fgets()抓取空格。我不知道你正在使用$ data变量做什么,但如果你只是在HTML页面上显示它,那么你将看不到空格。这是因为HTML会删除所有空格。尝试使用此代码阅读并显示您的文件内容:
$file = fopen('file.txt', 'r') or exit('error');
$data = '';
while(!feof($file))
{
$data .= '<pre>' . fgets($file) . '</pre><br>';
}
fclose($file);
echo $data;
PRE标签允许您显示$ data而无需解析它。
答案 3 :(得分:0)
我目前有相同的要求,并且经验表明某些字符被写为制表符。
我做的是:
$tabChar = ' ';
$regularChar = ' '
$file = fopen('/file.txt');
while($line = fgets($file)) {
$l = str_replace("\t", $tabChar, $line);
$l = str_replace(" ", $regularChar, $line);
// ...
// replacing can be done till it matches your needs
$lines .= $l; // maybe append <br /> if neccessary
}
$result = '<pre'> . $lines . '</pre>';
这个对我有用,也许对你有帮助: - )。