0

さて、私は次のようにフォーマットされたリストを持っています:

Entry-no.1[tab]Description[line-break]
Entry-no.2[tab]Description[line-break]
Entry-no.3[tab]Description[line-break]
and so on...

「エントリ列」を分離し、次のようなカンマ区切りのシートを作成するためにあらゆることを試みました。

Entry-no.1,Entry-no.2,Entry-no.3,etc..

これを行うために私が思いつくことができる最高のコードは次のとおりですが、機能しません:(。

<?php
$ls = file_get_contents("File.txt");
$newLS = "";
$index = 0;
for($i=0;$i<strlen($ls);$i++) 
{ 
if($ls[$i]=='\t'){
    $index = $i;
}
if($ls[$i]=='\n'){
    $newLS += substr($ls,0,$index); 
}
} 
echo "woot<br>";
echo $newLS;
echo "done";
?>


PS ファイルの元のレイアウトを変更することはできません。

4

1 に答える 1

1

これでうまくいくはずです。ドキュメントが並んでいます。

// read file into array
$array = file('File.txt');

// new array to store results
$new_array = array();

// loop through array
foreach ($array as $line) {
    // explode the line on tab. Note double quotes around \t are mandatory
    $line_array = explode("\t", $line);
    // set first element to the new array
    $new_array[] = $line_array[0];
}

// you can either use this array as is or output as comma-separate value as follows:
echo implode(',', $new_array);

要約すると:

  • ファイルを文字列ではなく配列に読み込みます。これにより、改行が処理されます
  • タブの前の各行の部分を取得し、新しい配列に配置します。
  • 前後に二重引用符を使用することが重要です。そうしない\tと、文字通りのバックスラッシュと t として扱われます。
于 2013-07-01T17:47:44.577 に答える