【问题标题】:Loop into CSV file and get specific values from headers PHP循环进入 CSV 文件并从头文件 PHP 中获取特定值
【发布时间】:2019-10-14 00:07:22
【问题描述】:

我正在尝试导入 CSV 文件以自动插入候选人。

作为第一步,用户导入一个 excel 文件(.xls、.xls)。借助 PhpSpreadSheet 库,我将文件从文件转换为 csv,以便更好地利用它。

csv 文件示例:

我只想恢复一些数据列,例如 lastNamefirstNamegenderphonenumber

为此,我使用正则表达式来检测它们。在每次检测中,我将结果存储在数组中。 但是之后,如何从这些列中恢复数据?

$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);
}

【问题讨论】:

    标签: php regex csv while-loop


    【解决方案1】:
    <?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);
    }
    

    【讨论】:

    • 感谢您的回答@stefo91,但是使用您的代码,我仍然可以恢复所有内容文件:/
    猜你喜欢
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    相关资源
    最近更新 更多