【问题标题】:How to concatenate two strings using fgetcsv and fputcsv?如何使用 fgetcsv 和 fputcsv 连接两个字符串?
【发布时间】:2011-01-14 04:12:57
【问题描述】:
  1. 我正在创建一个脚本,该脚本将读取 csv 文件并使用 fgetcsv 将其显示在 textarea 上。

      $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,内容将显示在 textarea 内,没有双引号和逗号。 我可以格式化它以便它也显示双引号和逗号吗?

  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 的格式。 我将如何编码?

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

【问题讨论】:

    标签: php csv fgetcsv fputcsv


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回复.. 生病尝试并发布更新.. :)
    • 你能告诉我如何像 #2 那样格式化内容吗?
    • fputcsv 需要一个数组,所以这就是你必须提供的。如果换行符嵌入到存储在该数组中的值中,则必须使用 rtrim() 预处理这些值以将它们删除,之后 fputcsv 应该基本上重新生成您最初读取的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2011-11-04
    • 2022-11-16
    • 2013-11-05
    相关资源
    最近更新 更多