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”分成两行,并在每行的末尾放置一个逗号。

  7. 现在我想保留#2 的格式。我将如何编码?

你能引导我走向正确的方向吗?谢谢!

4

1 回答 1

0

听起来您想显示实际的原始 CSV 文本,而不是 CSV 中的解析数据。而不是使用fgetcsv(),只需使用fgets(),您将获得无需任何解析的文本行,保留引号和逗号。

至于 fputcsv,它会写出您传入其中的内容,因此请确保清除从表单返回的任何内容(例如,去除多余的换行符)。

于 2011-01-14T04:23:02.527 回答