這裏是一個迭代的方法:
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
)
Demo of above examples with your file's data
他們是列製表符分隔還是所有空格? – Gordon