Beispiel #1
0
$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());