0

まず、私は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>";
4

3 に答える 3

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もあります。

于 2012-07-05T13:13:17.713 に答える
0

fgetsドキュメントは次のとおりです。

読み取りは、length - 1 バイトが読み取られたとき、改行 (戻り値に含まれる)、または EOF (いずれか早い方) で終了します。長さが指定されていない場合、行の終わりに達するまでストリームから読み取り続けます。

$strLink = trim(fgets($file));処理の前に改行を削除するために使用できます。

于 2012-07-05T13:13:29.100 に答える
0

試す:

...     
$strCombined = trim($strLink)."\t".$strComment;
...
于 2012-07-05T13:15:17.133 に答える