xref: /PHP-5.3/ext/spl/tests/iterator_052.phpt (revision 610c7fbe)
1--TEST--
2SPL: RegexIterator::ALL_MATCHES
3--FILE--
4<?php
5
6class MyRegexIterator extends RegexIterator
7{
8	public $uk, $re;
9
10	function __construct($it, $re, $mode, $flags = 0)
11	{
12		$this->uk = $flags & self::USE_KEY;
13		$this->re = $re;
14		parent::__construct($it, $re, $mode, $flags);
15	}
16
17	function show()
18	{
19		foreach($this as $k => $v)
20		{
21			var_dump($k);
22			var_dump($v);
23		}
24	}
25
26	function accept()
27	{
28		@preg_match_all($this->re, (string)($this->uk ? $this->key() : $this->current()), $sub);
29		$ret = parent::accept();
30		var_dump($sub == $this->current());
31		return $ret;
32	}
33}
34
35$ar = new ArrayIterator(array('1','1,2','1,2,3','',NULL,array(),'FooBar',',',',,'));
36$it = new MyRegexIterator($ar, '/(\d),(\d)/', RegexIterator::ALL_MATCHES);
37$it->show();
38
39$it = new MyRegexIterator($ar, '/(\d)/', RegexIterator::ALL_MATCHES);
40$it->show();
41
42var_dump($ar);
43
44?>
45===DONE===
46<?php exit(0); ?>
47--EXPECTF--
48bool(true)
49int(0)
50array(3) {
51  [0]=>
52  array(0) {
53  }
54  [1]=>
55  array(0) {
56  }
57  [2]=>
58  array(0) {
59  }
60}
61bool(true)
62int(1)
63array(3) {
64  [0]=>
65  array(1) {
66    [0]=>
67    string(3) "1,2"
68  }
69  [1]=>
70  array(1) {
71    [0]=>
72    string(1) "1"
73  }
74  [2]=>
75  array(1) {
76    [0]=>
77    string(1) "2"
78  }
79}
80bool(true)
81int(2)
82array(3) {
83  [0]=>
84  array(1) {
85    [0]=>
86    string(3) "1,2"
87  }
88  [1]=>
89  array(1) {
90    [0]=>
91    string(1) "1"
92  }
93  [2]=>
94  array(1) {
95    [0]=>
96    string(1) "2"
97  }
98}
99bool(true)
100int(3)
101array(3) {
102  [0]=>
103  array(0) {
104  }
105  [1]=>
106  array(0) {
107  }
108  [2]=>
109  array(0) {
110  }
111}
112bool(true)
113int(4)
114array(3) {
115  [0]=>
116  array(0) {
117  }
118  [1]=>
119  array(0) {
120  }
121  [2]=>
122  array(0) {
123  }
124}
125bool(true)
126int(5)
127array(3) {
128  [0]=>
129  array(0) {
130  }
131  [1]=>
132  array(0) {
133  }
134  [2]=>
135  array(0) {
136  }
137}
138bool(true)
139int(6)
140array(3) {
141  [0]=>
142  array(0) {
143  }
144  [1]=>
145  array(0) {
146  }
147  [2]=>
148  array(0) {
149  }
150}
151bool(true)
152int(7)
153array(3) {
154  [0]=>
155  array(0) {
156  }
157  [1]=>
158  array(0) {
159  }
160  [2]=>
161  array(0) {
162  }
163}
164bool(true)
165int(8)
166array(3) {
167  [0]=>
168  array(0) {
169  }
170  [1]=>
171  array(0) {
172  }
173  [2]=>
174  array(0) {
175  }
176}
177bool(true)
178int(0)
179array(2) {
180  [0]=>
181  array(1) {
182    [0]=>
183    string(1) "1"
184  }
185  [1]=>
186  array(1) {
187    [0]=>
188    string(1) "1"
189  }
190}
191bool(true)
192int(1)
193array(2) {
194  [0]=>
195  array(2) {
196    [0]=>
197    string(1) "1"
198    [1]=>
199    string(1) "2"
200  }
201  [1]=>
202  array(2) {
203    [0]=>
204    string(1) "1"
205    [1]=>
206    string(1) "2"
207  }
208}
209bool(true)
210int(2)
211array(2) {
212  [0]=>
213  array(3) {
214    [0]=>
215    string(1) "1"
216    [1]=>
217    string(1) "2"
218    [2]=>
219    string(1) "3"
220  }
221  [1]=>
222  array(3) {
223    [0]=>
224    string(1) "1"
225    [1]=>
226    string(1) "2"
227    [2]=>
228    string(1) "3"
229  }
230}
231bool(true)
232int(3)
233array(2) {
234  [0]=>
235  array(0) {
236  }
237  [1]=>
238  array(0) {
239  }
240}
241bool(true)
242int(4)
243array(2) {
244  [0]=>
245  array(0) {
246  }
247  [1]=>
248  array(0) {
249  }
250}
251bool(true)
252int(5)
253array(2) {
254  [0]=>
255  array(0) {
256  }
257  [1]=>
258  array(0) {
259  }
260}
261bool(true)
262int(6)
263array(2) {
264  [0]=>
265  array(0) {
266  }
267  [1]=>
268  array(0) {
269  }
270}
271bool(true)
272int(7)
273array(2) {
274  [0]=>
275  array(0) {
276  }
277  [1]=>
278  array(0) {
279  }
280}
281bool(true)
282int(8)
283array(2) {
284  [0]=>
285  array(0) {
286  }
287  [1]=>
288  array(0) {
289  }
290}
291object(ArrayIterator)#%d (1) {
292  ["storage":"ArrayIterator":private]=>
293  array(9) {
294    [0]=>
295    %s(1) "1"
296    [1]=>
297    %s(3) "1,2"
298    [2]=>
299    %s(5) "1,2,3"
300    [3]=>
301    %s(0) ""
302    [4]=>
303    NULL
304    [5]=>
305    array(0) {
306    }
307    [6]=>
308    %s(6) "FooBar"
309    [7]=>
310    %s(1) ","
311    [8]=>
312    %s(2) ",,"
313  }
314}
315===DONE===
316