PHP:
Arbeide med CSV

Hvordan:

PHP tilbyr innebygde funksjoner for håndtering av CSV-filer, noe som gjør det enkelt å lese fra og skrive til disse filene uten å måtte bruke tredjepartsbiblioteker. Her er eksempler for å komme i gang:

Lese en CSV-fil

Du kan åpne en CSV-fil og lese innholdet ved hjelp av fopen() i kombinasjon med fgetcsv():

<?php
$filename = 'data.csv';
$handle = fopen($filename, "r");
if ($handle !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "Antall felt i linjen: $num\n";
        for ($c = 0; $c < $num; $c++) {
            echo $data[$c] . "\n";
        }
    }
    fclose($handle);
}
?>

Dette skriptet skriver ut antall felt i hver linje etterfulgt av innholdet i hvert felt.

Skrive til en CSV-fil

For å skrive til en CSV-fil, bruk fopen() i skrivemodus (w) og fputcsv():

<?php
$liste = [
    ['ID', 'Navn', 'E-post'],
    [1, 'John Doe', '[email protected]'],
    [2, 'Jane Doe', '[email protected]']
];

$handle = fopen('users.csv', 'w');

foreach ($liste as $rad) {
    fputcsv($handle, $rad);
}

fclose($handle);
?>

Dette skriptet oppretter en fil med navnet users.csv og skriver overskriften og to rader med data til den.

Bruke et bibliotek: League\Csv

For mer avansert håndtering av CSV, tilbyr biblioteket League\Csv et robust sett med funksjoner. Etter å ha installert det via Composer (composer require league/csv), kan du bruke det for å lese og skrive CSV-data mer fleksibelt.

Lese med League\Csv

<?php
require 'vendor/autoload.php';

use League\Csv\Reader;

$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0); // Sett hvis du vil bruke den første raden som overskrift

$resultater = $csv->getRecords();
foreach ($resultater as $rad) {
    print_r($rad);
}
?>

Dette skriptet leser data.csv, behandler den første raden som kolonneoverskrifter, og skriver ut hver rad som et assosiativt array.

Skrive med League\Csv

<?php
require 'vendor/autoload.php';

use League\Csv\Writer;

$csv = Writer::createFromPath('users_new.csv', 'w+');

$csv->insertOne(['ID', 'Navn', 'E-post']);
$csv->insertAll([
    [3, 'Alex Doe', '[email protected]'],
    [4, 'Anna Smith', '[email protected]']
]);

echo "Skrevet til users_new.csv med suksess.";
?>

Dette oppretter users_new.csv og skriver en overskriftsrad etterfulgt av to datarader.