123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- --TEST--
- SPL: RegexIterator::ALL_MATCHES
- --FILE--
- <?php
- class MyRegexIterator extends RegexIterator
- {
- public $uk, $re;
- function __construct($it, $re, $mode, $flags = 0)
- {
- $this->uk = $flags & self::USE_KEY;
- $this->re = $re;
- parent::__construct($it, $re, $mode, $flags);
- }
- function show()
- {
- foreach($this as $k => $v)
- {
- var_dump($k);
- var_dump($v);
- }
- }
- function accept(): bool
- {
- @preg_match_all($this->re, (string)($this->uk ? $this->key() : $this->current()), $sub);
- $ret = parent::accept();
- var_dump($sub == $this->current());
- return $ret;
- }
- }
- $ar = new ArrayIterator(array('1','1,2','1,2,3','',NULL,array(),'FooBar',',',',,'));
- $it = new MyRegexIterator($ar, '/(\d),(\d)/', RegexIterator::ALL_MATCHES, RegexIterator::USE_KEY);
- $it->show();
- $it = new MyRegexIterator($ar, '/(\d)/', RegexIterator::ALL_MATCHES, RegexIterator::USE_KEY);
- $it->show();
- var_dump($ar);
- ?>
- --EXPECTF--
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- int(0)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "0"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "0"
- }
- }
- bool(true)
- int(1)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "1"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "1"
- }
- }
- bool(true)
- int(2)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "2"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "2"
- }
- }
- bool(true)
- int(3)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "3"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "3"
- }
- }
- bool(true)
- int(4)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "4"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "4"
- }
- }
- bool(true)
- int(5)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "5"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "5"
- }
- }
- bool(true)
- int(6)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "6"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "6"
- }
- }
- bool(true)
- int(7)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "7"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "7"
- }
- }
- bool(true)
- int(8)
- array(2) {
- [0]=>
- array(1) {
- [0]=>
- string(1) "8"
- }
- [1]=>
- array(1) {
- [0]=>
- string(1) "8"
- }
- }
- object(ArrayIterator)#%d (1) {
- ["storage":"ArrayIterator":private]=>
- array(9) {
- [0]=>
- %s(1) "1"
- [1]=>
- %s(3) "1,2"
- [2]=>
- %s(5) "1,2,3"
- [3]=>
- %s(0) ""
- [4]=>
- NULL
- [5]=>
- array(0) {
- }
- [6]=>
- %s(6) "FooBar"
- [7]=>
- %s(1) ","
- [8]=>
- %s(2) ",,"
- }
- }
|