Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用FGET时包括前导空格_Php_Text_Str Replace_Fgets - Fatal编程技术网

在php中使用FGET时包括前导空格

在php中使用FGET时包括前导空格,php,text,str-replace,fgets,Php,Text,Str Replace,Fgets,我使用PHP通过fgets()命令读取一个简单的文本文件: $file = fopen("filename.txt", "r") or exit('oops'); $data = ""; while(!feof($file)) { $data .= fgets($file) . '<br>'; } fclose($file); 不知道从这里到哪里去 提前感谢, 道格 更新: 如果我将文本转储到文本区域,则文本显示正确,但如果我将其回显到网页,则文本显示不正确。请尝试:

我使用PHP通过
fgets()
命令读取一个简单的文本文件:

$file = fopen("filename.txt", "r") or exit('oops');
$data = "";

while(!feof($file)) {
    $data .= fgets($file) . '<br>';
}

fclose($file);
不知道从这里到哪里去

提前感谢,

道格

更新:

如果我将文本转储到文本区域,则文本显示正确,但如果我将其回显到网页,则文本显示不正确。

请尝试:

$data = preg_replace('/\s+/', '&nbsp;', $data);

fgets
不应修剪空白。

尝试使用file\u get\u内容读取文件,如果成功读取文件开头的空白

$data=文件获取内容(“xyz.txt”)

$data=str\u replace(“,“~”,$data)

echo$数据

希望这有助于

函数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;
$file=fopen('file.txt','r')或exit('error');
$data='';
而(!feof($file))
{
$data.=''.fgets($file)。
$tabChar = '&nbsp;&nbsp;&nbsp;&nbsp;';
$regularChar = '&nbsp;'

$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>';
} fclose($文件); 回波数据;

PRE标记允许您在不解析$data的情况下显示它。

我目前也有相同的要求,并且体验到有些字符是作为制表符写入的

我所做的是:

$tabChar='';
$regularChar=''
$file=fopen('/file.txt');
而($line=fgets($file)){
$l=str\u replace(“\t”,$tabChar,$line);
$l=str_replace(“,$regularChar,$line);
// ...
//可以进行更换,直到符合您的需要
$lines.=$l;//必要时可追加
}
$result='如果您改用其他读取函数,如
fread()
,该怎么办?请尝试
file\u get\u contents
并告诉我们是否仍然没有空格。我不能使用fread,因为我不知道行的长度。FREAD.FILE\u GET\u内容不允许在行之间插入
,因此需要长度参数。它一次抓取整个文件。使用PRE会添加额外的换行符,但不包括前导空格。我几分钟前尝试了上述代码,fgets()函数没有问题。它读取一行中出现的所有空格。可能是您试图读取的文件编码有问题?您是否尝试在行中第一个字符之前使用空格?如果空格位于第一个字符之后,则可以使用。是。我又试了一次,只是想确定一下。我在直线的起点、中间和末端都有空白(有几条不同组合的线)。有人发布了一个带有file\u get\u contents()函数的版本。它也可以很好地工作(它一次读取所有文件,但包括空格)。可能我在这里遗漏了什么。使用PREG_REPLACE会删除所有字符之间的空格,而不包括前导空格。如果有办法识别换行符并将其替换为BR,这可能会起作用。我的实际意思是要求您检查是否通过使用代码的第一行解决了问题。否。使用file\u get\u contents方法仍排除前导空格。
$tabChar = '&nbsp;&nbsp;&nbsp;&nbsp;';
$regularChar = '&nbsp;'

$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>';