0
  1. csv ファイルを読み取り、fgetcsv を使用してテキストエリアに表示するスクリプトを作成しています。

      $handle = @fopen($filePath, "r");
    
      if ($handle)
      {
         while (($buffer = fgetcsv($handle, 1000,",")) !== false) 
         {
              foreach($buffer as $buff){
                 echo $buff."\n";
              }
    
         }
      }      
    
  2. csvのフォーマットは

    "line1-content1","line1-content2"
    "line2-content1","line2-content2"

  3. fgetcsv を使用すると、コンテンツは二重引用符とコンマなしでテキストエリア内に表示されます。二重引用符とカンマも表示するようにフォーマットできますか?

  4. 次に、fputcsvを使用して保存すると

    $file_to_load = $_GET['filepath'];
    
    $filePath = $dir.$file_to_load;
    
    $trans = trim($_POST['txtarea']);
    $keyarr = split("\n",$trans);
    
    $fp = fopen($filePath, 'w');
    foreach (array ($keyarr) as $fields) {
      fputcsv($fp, $fields);
    }
    
    fclose($fp);
    
  5. csvファイルを見ると、csvを保存しましたが、このように表示されます

    「line1-content1
    」、「line1-content2
    」、「 line2-content1
    」、「line2-content2」

  6. 「line1-content1」と「line1-content2」を 2 行に分割し、各行の末尾にコンマを挿入します。

  7. #2のフォーマットを維持したいと思います。どのようにコーディングしますか?

正しい方向に私を導くことができますか?ありがとう!

4

1 に答える 1

0

CSV 内の解析されたデータではなく、実際の生の CSV テキストを表示したいようです。を使用する代わりに、 を使用fgetcsv()するだけでfgets()、引用符とコンマを保持したまま、解析せずにテキスト行を取得できます。

fputcsv に関しては、渡されたものを書き出すので、フォームから返されたものはすべてクリーンアップされていることを確認してください (たとえば、余分な改行が取り除かれます)。

于 2011-01-14T04:23:02.527 に答える