Hướng dẫn how do i process a csv file in php? - làm cách nào để xử lý tệp csv trong php?

Tôi đã tìm kiếm điều tương tự mà không sử dụng một số lớp PHP không được hỗ trợ. Excel CSV không phải lúc nào cũng sử dụng các dấu phân cách trích dẫn và thoát các trích dẫn bằng cách sử dụng "" vì thuật toán có thể được thực hiện trở lại vào những năm 80 hoặc một cái gì đó. Sau khi xem một số trình phân tích cú pháp .csv trong phần bình luận trên php.net, tôi đã thấy những người thậm chí sử dụng mã gọi lại hoặc mã eval'd và chúng không hoạt động như cần thiết hoặc đơn giản là không hoạt động. Vì vậy, tôi đã viết các thói quen của riêng mình cho việc này và chúng hoạt động trong cấu hình PHP cơ bản nhất. Các phím mảng có thể là số hoặc được đặt tên là các trường được đưa ra trong hàng tiêu đề. Hi vọng điêu nay co ich.

    function SW_ImplodeCSV[array $rows, $headerrow=true, $mode='EXCEL', $fmt='2D_FIELDNAME_ARRAY']
    // SW_ImplodeCSV - returns 2D array as string of csv[MS Excel .CSV supported]
    // AUTHOR: 
    // RELEASED: 9/21/13 BETA
      { $r=1; $row=array[]; $fields=array[]; $csv="";
        $escapes=array['\r', '\n', '\t', '\\', '\"'];  //two byte escape codes
        $escapes2=array["\r", "\n", "\t", "\\", "\""]; //actual code

        if[$mode=='EXCEL']// escape code = ""
         { $delim=','; $enclos='"'; $rowbr="\r\n"; }
        else //mode=STANDARD all fields enclosed
           { $delim=','; $enclos='"'; $rowbr="\r\n"; }

          $csv=""; $i=-1; $i2=0; $imax=count[$rows];

          while[ $i < $imax ]
          {
            // get field names
            if[$i == -1]
             { $row=$rows[0];
               if[$fmt=='2D_FIELDNAME_ARRAY']
                { $i2=0; $i2max=count[$row];
                  while[ list[$k, $v] = each[$row] ]
                   { $fields[$i2]=$k;
                     $i2++;
                   }
                }
               else //if[$fmt='2D_NUMBERED_ARRAY']
                { $i2=0; $i2max=[count[$rows[0]]];
                  while[$i2

Chủ Đề