0

そのため、csv ファイルを正常にアップロードして解析するフォームとパーサーがありますが、csv ファイルの列ヘッダーのみを取得したいと考えています。すべての列ヘッダーを含む最初の行のみを取得するにはどうすればよいですか?

function ShowForm()
{

print"<form method='post' action='$_SERVER[PHP_SELF]' enctype='multipart/form-data'>\n";
print"<p>enter csv file:\n".
    "<input type='file' name ='csv' value=''/>\n"."</p>".
    "<p><input type='submit' name ='submit'  />".
    "</p>".
    "</form>";

 }
//////////////////////////////////////////////////////////////////////////////////  
  function Processform()
{
$csv = array();
// check there are no errors
if($_FILES['csv']['error'] == 0){
$name = $_FILES['csv']['name'];
$ext = strtolower(end(explode('.', $_FILES['csv']['name'])));
$type = $_FILES['csv']['type'];
$tmpName = $_FILES['csv']['tmp_name'];

print "name : $name<br >";
print "extenstion : $ext<br >";
print "type : $type<br >";
print "name : $tmpName<br >";


 if($ext === 'csv'){
    if(($handle = fopen($tmpName, 'r')) !== FALSE) {
        // necessary if a large csv file
        set_time_limit(0);

        $row = 0;

        while(($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
            // number of fields in the csv
            $num = count($data);

            // get the values from the csv
            $csv[$row]['row1'] = $data[0];
            $csv[$row]['row2'] = $data[1];

            // inc the row
            $row++;
        }
        fclose($handle);
    }
  }
 }
 } 
4

1 に答える 1

0

このfgetcsvメソッドは CSV ファイルから 1 行をフェッチするため、最初の行を取得するには、1 回だけ呼び出します。

    if(($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        // handle first row
    }

    $row = 1;

    // Now handle all the rest
    while(($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        // number of fields in the csv
        $num = count($data);

        // get the values from the csv
        $csv[$row]['row1'] = $data[0];
        $csv[$row]['row2'] = $data[1];

        // inc the row
        $row++;
    }
于 2013-04-25T05:34:03.890 に答える