This repository has been archived on 2025-06-02. You can view files and clone it, but cannot push or open issues or pull requests.
nulib/php/src/file/csv/CsvReader.php

42 lines
1.0 KiB
PHP

<?php
namespace nulib\file\csv;
use nulib\file;
use nulib\file\FileReader;
use nulib\file\tab\AbstractReader;
use nulib\file\tab\TAbstractReader;
class CsvReader extends AbstractReader {
use TAbstractReader;
function __construct($input, ?array $params=null) {
parent::__construct($input, $params);
$this->csvFlavour = $params["csv_flavour"] ?? null;
$this->inputEncoding = $params["input_encoding"] ?? null;
}
protected ?string $csvFlavour;
protected ?string $inputEncoding;
function getIterator() {
$reader = new FileReader(file::fix_dash($this->input));
$inputEncoding = $this->inputEncoding;
if ($inputEncoding !== null) {
$reader->appendFilter("convert.iconv.$inputEncoding.utf-8");
}
$reader->setCsvFlavour($this->csvFlavour);
while (($row = $reader->fgetcsv()) !== null) {
foreach ($row as &$col) {
$this->verifixCol($col);
}; unset($col);
if ($this->cookRow($row)) {
yield $row;
$this->idest++;
}
$this->isrc++;
}
$reader->close();
}
}