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 或更高版本。

高温高压

R

于 2013-02-18T10:36:58.143 回答