Php 上载包含和排除行和列的.csv文件
在PHP中上载.csv文件或删除特定单词时,是否可以删除额外的行 请看我的屏幕截图。我想在MySQL中处理上传时排除那些被包围的 这是我在网上找到的代码Php 上载包含和排除行和列的.csv文件,php,mysql,file-upload,Php,Mysql,File Upload,在PHP中上载.csv文件或删除特定单词时,是否可以删除额外的行 请看我的屏幕截图。我想在MySQL中处理上传时排除那些被包围的 这是我在网上找到的代码 <?php $message = null; $allowed_extensions = array('csv'); $upload_path = ''; if (!empty($_FILES['file'])) { if ($_FILES['file']['error'] == 0) { // c
<?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>';
}
}
?>
<代码> 嗯,没有更多的信息,看起来你要排除的行比其他行少(我假设你也不想要空白行)。< /P> 您可以使用该函数
$arr= str_getcsv();
要将一行CSV数据读入数组,请执行以下操作
if(sizeof($arr)!=$validCount)
在生成的数组中,可以排除非特定长度的行($validCount)
显然,我们可以得到更多的深度排除,但我猜这将让你开始
注-这要求PHP5.3或更高
嗯
R有没有一种方法可以只从.csv导入所选列的名称,而不需要尝试。下载解决方案时,您希望对其进行修改。