iterator_053.phpt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. --TEST--
  2. SPL: RegexIterator::ALL_MATCHES
  3. --FILE--
  4. <?php
  5. class MyRegexIterator extends RegexIterator
  6. {
  7. public $uk, $re;
  8. function __construct($it, $re, $mode, $flags = 0)
  9. {
  10. $this->uk = $flags & self::USE_KEY;
  11. $this->re = $re;
  12. parent::__construct($it, $re, $mode, $flags);
  13. }
  14. function show()
  15. {
  16. foreach($this as $k => $v)
  17. {
  18. var_dump($k);
  19. var_dump($v);
  20. }
  21. }
  22. function accept()
  23. {
  24. @preg_match_all($this->re, (string)($this->uk ? $this->key() : $this->current()), $sub);
  25. $ret = parent::accept();
  26. var_dump($sub == $this->current());
  27. return $ret;
  28. }
  29. }
  30. $ar = new ArrayIterator(array('1','1,2','1,2,3','',NULL,array(),'FooBar',',',',,'));
  31. $it = new MyRegexIterator($ar, '/(\d),(\d)/', RegexIterator::ALL_MATCHES, RegexIterator::USE_KEY);
  32. $it->show();
  33. $it = new MyRegexIterator($ar, '/(\d)/', RegexIterator::ALL_MATCHES, RegexIterator::USE_KEY);
  34. $it->show();
  35. var_dump($ar);
  36. ?>
  37. ===DONE===
  38. <?php exit(0); ?>
  39. --EXPECTF--
  40. bool(true)
  41. bool(true)
  42. bool(true)
  43. bool(true)
  44. bool(true)
  45. bool(true)
  46. bool(true)
  47. bool(true)
  48. bool(true)
  49. bool(true)
  50. int(0)
  51. array(2) {
  52. [0]=>
  53. array(1) {
  54. [0]=>
  55. string(1) "0"
  56. }
  57. [1]=>
  58. array(1) {
  59. [0]=>
  60. string(1) "0"
  61. }
  62. }
  63. bool(true)
  64. int(1)
  65. array(2) {
  66. [0]=>
  67. array(1) {
  68. [0]=>
  69. string(1) "1"
  70. }
  71. [1]=>
  72. array(1) {
  73. [0]=>
  74. string(1) "1"
  75. }
  76. }
  77. bool(true)
  78. int(2)
  79. array(2) {
  80. [0]=>
  81. array(1) {
  82. [0]=>
  83. string(1) "2"
  84. }
  85. [1]=>
  86. array(1) {
  87. [0]=>
  88. string(1) "2"
  89. }
  90. }
  91. bool(true)
  92. int(3)
  93. array(2) {
  94. [0]=>
  95. array(1) {
  96. [0]=>
  97. string(1) "3"
  98. }
  99. [1]=>
  100. array(1) {
  101. [0]=>
  102. string(1) "3"
  103. }
  104. }
  105. bool(true)
  106. int(4)
  107. array(2) {
  108. [0]=>
  109. array(1) {
  110. [0]=>
  111. string(1) "4"
  112. }
  113. [1]=>
  114. array(1) {
  115. [0]=>
  116. string(1) "4"
  117. }
  118. }
  119. bool(true)
  120. int(5)
  121. array(2) {
  122. [0]=>
  123. array(1) {
  124. [0]=>
  125. string(1) "5"
  126. }
  127. [1]=>
  128. array(1) {
  129. [0]=>
  130. string(1) "5"
  131. }
  132. }
  133. bool(true)
  134. int(6)
  135. array(2) {
  136. [0]=>
  137. array(1) {
  138. [0]=>
  139. string(1) "6"
  140. }
  141. [1]=>
  142. array(1) {
  143. [0]=>
  144. string(1) "6"
  145. }
  146. }
  147. bool(true)
  148. int(7)
  149. array(2) {
  150. [0]=>
  151. array(1) {
  152. [0]=>
  153. string(1) "7"
  154. }
  155. [1]=>
  156. array(1) {
  157. [0]=>
  158. string(1) "7"
  159. }
  160. }
  161. bool(true)
  162. int(8)
  163. array(2) {
  164. [0]=>
  165. array(1) {
  166. [0]=>
  167. string(1) "8"
  168. }
  169. [1]=>
  170. array(1) {
  171. [0]=>
  172. string(1) "8"
  173. }
  174. }
  175. object(ArrayIterator)#%d (1) {
  176. ["storage":"ArrayIterator":private]=>
  177. array(9) {
  178. [0]=>
  179. %s(1) "1"
  180. [1]=>
  181. %s(3) "1,2"
  182. [2]=>
  183. %s(5) "1,2,3"
  184. [3]=>
  185. %s(0) ""
  186. [4]=>
  187. NULL
  188. [5]=>
  189. array(0) {
  190. }
  191. [6]=>
  192. %s(6) "FooBar"
  193. [7]=>
  194. %s(1) ","
  195. [8]=>
  196. %s(2) ",,"
  197. }
  198. }
  199. ===DONE===