0

PHP で .csv ファイルをアップロードするとき、または特定の単語を削除するときに、余分な行を削除することは可能ですか?

私のスクリーンショットを見てください。MySQLでアップロードする際に、丸で囲んだものを除外したい。

スクリーンショット フルサイズ

これがネット上で見つけた私のコードです。

<?php

$message = null;

$allowed_extensions = array('csv');

$upload_path = '';

if (!empty($_FILES['file'])) {

    if ($_FILES['file']['error'] == 0) {

        // check extension
        $file = explode(".", $_FILES['file']['name']);
        $extension = array_pop($file);

        if (in_array($extension, $allowed_extensions)) {

            if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_path.'/'.$_FILES['file']['name'])) {

                if (($handle = fopen($upload_path.'/'.$_FILES['file']['name'], "r")) !== false) {

                    $keys = array();
                    $out = array();

                    $insert = array();

                    $line = 1;

                    while (($row = fgetcsv($handle, 0, ',', '"')) !== FALSE) {

                        foreach($row as $key => $value) {
                            if ($line === 1) {
                                $keys[$key] = $value;
                            } else {
                                $out[$line][$key] = $value;

                            }
                        }

                        $line++;

                    }

                    fclose($handle);    

                    if (!empty($keys) && !empty($out)) {

                        $db = new PDO('mysql:host=localhost;dbname=attendance', 'root', 'root');
                        $db->exec("SET CHARACTER SET utf8");

                        foreach($out as $key => $value) {

                            $sql  = "INSERT INTO `report` (`";
                            $sql .= implode("`, `", $keys);
                            $sql .= "`) VALUES (";
                            $sql .= implode(", ", array_fill(0, count($keys), "?"));
                            $sql .= ")";
                            $statement = $db->prepare($sql);
                            $statement->execute($value);

                        }

                        $message = '<span class="green">File has been uploaded successfully</span>';

                    }   

                }

            }

        } else {
            $message = '<span class="red">Only .csv file format is allowed</span>';
        }

    } else {
        $message = '<span class="red">There was a problem with your file</span>';
    }

}

?>
4

1 に答える 1

0

まあ、それ以上の情報はありません-除外したい行は他の行よりも少ないようです(空白の行も必要ないと思います)。

機能を使用できます

$arr= str_getcsv();

CSV データの行を配列に読み込む

if(sizeof($arr)!=$validCount)

結果の配列では、特定の長さ ($validCount) ではない行を除外できます。

明らかに、除外についてさらに深く掘り下げることができますが、これがあなたの出発点になると思います.

注 - これには PHP5.3 以降が必要です。

HTH

R

于 2013-02-18T10:36:58.143 に答える