diff options
Diffstat (limited to 'src/Reader.php')
-rw-r--r-- | src/Reader.php | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/Reader.php b/src/Reader.php index 1f73476..4e764b5 100644 --- a/src/Reader.php +++ b/src/Reader.php @@ -45,7 +45,9 @@ class Reader extends AbstractCsv */ public function query(callable $callable = null) { - $iterator = new CallbackFilterIterator($this->getIterator(), function ($row) { + $iterator = $this->getIterator(); + $iterator = $this->applyBomStripping($iterator); + $iterator = new CallbackFilterIterator($iterator, function ($row) { return is_array($row); }); @@ -53,7 +55,7 @@ class Reader extends AbstractCsv $iterator = $this->applyIteratorSortBy($iterator); $iterator = $this->applyIteratorInterval($iterator); if (! is_null($callable)) { - $iterator = new Modifier\MapIterator($iterator, $callable); + return new Modifier\MapIterator($iterator, $callable); } return $iterator; @@ -65,11 +67,11 @@ class Reader extends AbstractCsv protected function getConversionIterator() { $iterator = $this->getIterator(); + $iterator = $this->applyBomStripping($iterator); $iterator = $this->applyIteratorFilter($iterator); $iterator = $this->applyIteratorSortBy($iterator); - $iterator = $this->applyIteratorInterval($iterator); - return $iterator; + return $this->applyIteratorInterval($iterator); } /** @@ -239,6 +241,11 @@ class Reader extends AbstractCsv throw new InvalidArgumentException('the specified row does not exist'); } + if (0 == $offset && $this->isBomStrippable()) { + $bom = $this->getInputBom(); + $res[0] = mb_substr($res[0], mb_strlen($bom)); + } + return $res; } |