src/XLSXParser/SharedStrings.php
<?php declare(strict_types = 1); namespace Spaghetti\XLSXParser; use XMLReader; use function strtr;use function trim; /** * @internal */final class SharedStrings extends AbstractXMLDictionary{ private const INDEX = 'si'; private const VALUE = 't'; private int $currentIndex = -1; protected function readNext(): void { $xml = $this->getXMLReader(); while ($xml->read()) { if (XMLReader::ELEMENT === $xml->nodeType) { $this->process(xml: $xml); } } $this->valid = false; $this->closeXMLReader(); } private function process(XMLReader $xml): void { match ($xml->name) { self::INDEX => $this->currentIndex++, self::VALUE => $this->values[$this->currentIndex][] = trim(string: strtr($xml->readString(), ["\u{a0}" => ' ']), characters: ' '), default => null, }; }}