新行或返回被添加到文本文件中而没有提示

时间:2012-07-05 13:07:48

标签: php

首先,我是PHP的菜鸟,但这是我的问题。我试图从文本文件中读取一行,操纵该行,然后将原始行和新行写入新的文本文件。由于某种原因,它在输出文件中添加了额外的返回或新行。

原始文件

/Volumes/EC/EC_0101/B-W Art/001_0101.EPS
...
/Volumes/EC/EC_0101/B-W Art/010_0101.EPS

用于测试的HTML输出

EC:EC_0101:B-W Art:001_0101.EPS EC EC_0101 B-W Art 001_0101.EPS
...
EC:EC_0101:B-W Art:010_0101.EPS EC EC_0101 B-W Art 010_0101.EPS

新文字文件输出

EC:EC_0101:B-W Art:001_0101.EPS
    EC  EC_0101 B-W Art 001_0101.EPS
...
EC:EC_0101:B-W Art:010_0101.EPS
    EC  EC_0101 B-W Art 010_0101.EPS

应以制表符分隔

EC:EC_0101:B-W Art:001_0101.EPS EC  EC_0101 B-W Art 001_0101.EPS
...
EC:EC_0101:B-W Art:010_0101.EPS EC  EC_0101 B-W Art 010_0101.EPS

我的代码

$file = fopen("files_list.txt", "r") or exit("Unable to open file!");
$filename = "files_list_tab.txt";
//Output a line of the file until the end is reached
while(!feof($file))
  {
  $strLink = fgets($file);
  //$strComment = $strLink;

  $strLink= str_replace("/",":",$strLink);
  $strLink= str_replace(":Volumes:","",$strLink);
  $strComment= str_replace(":","\t",$strLink);

  $strCombined = $strLink."\t".$strComment;
  $array[] = $strCombined;

  echo $strCombined. "<br>";

  }
fclose($file);

echo "Done <br>";

$strCombined = $array;
file_put_contents($filename, $strCombined);
echo "Done <br>";

3 个答案:

答案 0 :(得分:0)

嗯,是的,它在原始文件中。

假设:

// fgets() returns this
strLink = "/Volumes/EC/EC_0101/B-W Art/001_0101.EPS\n"

// then it becomes this
strLink = "EC:EC_0101:B-W Art:001_0101.EPS\n"
strComment = "EC\tEC_0101\tB-W Art\t001_0101.EPS\n"

// later you do this
strCombined = strLink + "\t" + strComment

由于strLink和strComment都以原始\n结尾,因此它也在strCombined中。

答案 1 :(得分:0)

fgets文档内容如下:

  

当读取长度 - 读取1个字节时,读取结束(其中   包含在返回值中)或EOF(以先到者为准)。   如果没有指定长度,它将继续从流中读取,直到   它到了终点。

您可以在处理之前使用$strLink = trim(fgets($file));删除换行符。

答案 2 :(得分:0)

尝试:

...     
$strCombined = trim($strLink)."\t".$strComment;
...