php - 在 PHP 中读取 CSV 文件并验证其第一行是否包含标题和日期
问题描述
我必须使用 php 上传 csv 文件。但在上传之前,我需要验证两件事。
如果它的标题是标题和日期(只有列)。
前两行标题不应该相同。
这是预期文件的结构。
Title Date
"The Forest: Season 1: Episode 1", "7/7/2018"
"Forgive Us Our Debts", "7/7/2018"
"Mr. Sunshine: Season 1: Episode 1", "7/7/2018"
到目前为止的代码
$rows = array_map('str_getcsv', file($_FILES["file"]["tmp_name"]));
$header = array_shift($rows);
$csv = array();
foreach($rows as $row) {
$csv[] = array_combine($header, $row);
}
我在关联数组中有一个 csv 文件,但无法读取第一行。
如何读取带有行索引的 CSV 行?
解决方案
str_getcsv 有一个逗号作为默认分隔符。而且您只能转换一行 CSV。如果你想转换整个文件,你应该使用 fgetcsv [ https://secure.php.net/manual/en/function.fgetcsv.php]
此代码示例将起作用:
<?php
$csv = "Title\tDate
\"The Forest: Season 1: Episode 1\"\t\"7/7/2018\"
\"Forgive Us Our Debts\",\t\"7/7/2018\"
\"Mr. Sunshine: Season 1: Episode 1\",\t\"7/7/2018\"";
$rows = array_map(function ($csv){
return str_getcsv($csv, "\t");
}, explode("\n",$csv));
$header = array_shift($rows);
$result = array();
foreach($rows as $row) {
$result[] = array_combine($header,$row);
}
var_dump($result);
推荐阅读
- javascript - 将对象内的对象数组作为多个对象 JavaScript
- python - Sub-dictionary from dictionary. Create another dictionary with dict comprehension, or delete keys from a copy of the original dictionary
- sql - 在雪花中使用 regexp_substr 提取数字
- regex - decimal and integer numbers that is less 91 with regex
- uwp - ListView, Select Item before ContextFlyout opens or Item is dragged
- selenium - Can some one help me implementing ExtentV3HtmlReporter in C#
- python - Python:删除第一个字母之前的所有字符
- java - Hibernate如何处理悲观读取和继承的不兼容问题
- c++ - Qt5 - QBoxLayout 将所有东西堆叠在一起
- c# - 在 Xamarin 的 ViewModel 中绑定来自 Bindablelayout.ItemTemplate 的数据