Вот подход с итераторами:
class SubstringIterator extends IteratorIterator
{
protected $startAtOffset, $endAtOffset;
public function __construct($iterator, $startAtOffset, $endAtOffset = null) {
parent::__construct($iterator);
$this->startAtOffset = $startAtOffset;
$this->endAtOffset = $endAtOffset;
}
public function current() {
return substr(parent::current(), $this->startAtOffset, $this->endAtOffset);
}
}
Вы бы использовали это так:
$playerIterator = new LimitIterator(
new SubstringIterator(
new SplFileObject('yourFile.txt'),
0, // start at beginning of line
15 // end before Alive:
)
, 1 // start at line 2 in file (omits the headline)
);
Затем вы можете foreach
через итератор, например,
foreach ($playerIterator as $player) {
echo $player, PHP_EOL;
}
Выход:
player1
bug
name with space
bob
Или преобразовать сложенные итераторы в массив:
$array = iterator_to_array($playerIterator);
print_r($array);
Выход:
Array
(
[1] => player1
[2] => bug
[3] => name with space
[4] => bob
)
Демонстрация приведенных выше примеров с данными вашего файла