Цикл в файл CSV и получить конкретные значения из заголовков PHP - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь импортировать файл CSV, чтобы автоматизировать вставку кандидатов.

В качестве первого шага пользователь импортирует файл Excel (.xls, .xls).Из файла я конвертирую его в csv, чтобы использовать его лучше благодаря библиотеке PhpSpreadSheet.

Пример файла csv: enter image description here

Я хотел бы восстановить только некоторые столбцы данных, например lastName , firstName , пол , номер телефона .

Для этого я использую регулярные выражения для их обнаружения.При каждом обнаружении я сохраняю результат в массиве.Однако после этого, как я могу восстановить данные из этих столбцов?

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

1 Ответ

0 голосов
/ 28 мая 2019
<?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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...