我正在尝试导入CSV文件,以自动执行候选广告的插入。
第一步,用户导入一个excel文件(.xls,.xls)。从文件中,我将其转换为csv,以便更好地利用它,这要归功于PhpSpreadSheet库。
我只想恢复一些数据列,例如姓氏,名字,性别,电话号码。
为此,我使用正则表达式来检测它们。在每次检测中,我将结果存储在数组中。 但是之后,如何从这些列中恢复数据?
$headers = [];
if(($handle = fopen($loadedSheetName.'.csv', "r")) !== FALSE)
{
foreach (fgetcsv($handle, 1000, ';') as $key => $header)
{
if (preg_match('/^(lastName)/i', $header, $matches))
{
$headers[$key] = $header;
}
if (preg_match('/^(firstName)/i', $header, $matches))
{
$headers[$key] = $header;
}
if (preg_match("/^(gender)/i", $header, $matches))
{
$headers[$key] = $header;
}
if (preg_match("/^(phoneNumber)/i", $header, $matches))
{
$headers[$key] = $header;
}
}
$keys = array_keys($headers);
$values = array_values($headers);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
for ($c=0; $c < $num; $c++)
{
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
答案 0 :(得分:0)
<?php
$headers = [];
$skip_headers = Array('lastname', 'firstname', 'gender', 'phonenumber');
if(($handle = fopen($loadedSheetName.'.csv', "r")) !== FALSE)
{
foreach (fgetcsv($handle, 1000, ';') as $key => $header)
{
if (!in_array(strtolower($header), $skip_headers))
{
$headers[$key] = $header;
}
}
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
foreach ($headers as $key_ => $value)
{
echo $data[$key_] . "<br />\n";
}
}
fclose($handle);
}