assert($out === array(0 => 6, 1 => array(0 => '45'))); $s->posShift(3); $out = $s->getNext(array('/\\d+/', '/\\s+/')); assert($out === array(0 => -1, 1 => null)); $s->reset(); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(0 => 1, 1 => '1')); $s->posShift(2); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(0 => 5, 1 => ';')); $s->pos(6); $out = $s->getNextStrpos(array('1', ';')); assert($out === array(-1, null)); $s->reset(); $s->string('0123'); $rules = array('one' => '/1/', 'zero' => '/0/', 'digit' => '/\\d+/'); $out = $s->getNextNamed($rules); assert($out === array('zero', 0, array('0'))); $s->posShift(1); $out = $s->getNextNamed($rules); assert($out === array('one', 1, array('1'))); $s->posShift(1); $out = $s->getNextNamed($rules); assert($out === array('digit', 2, array('23'))); // rest() had a problem being independent on two scanners $s2 = new StringScanner('123'); $s3 = new StringScanner('456'); assert($s2->rest() === '123'); assert($s3->rest() === '456'); assert($s2->rest() === $s2->string()); assert($s3->rest() === $s3->string());