iterator_052.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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(): bool
  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);
  32. $it->show();
  33. $it = new MyRegexIterator($ar, '/(\d)/', RegexIterator::ALL_MATCHES);
  34. $it->show();
  35. var_dump($ar);
  36. ?>
  37. --EXPECTF--
  38. bool(true)
  39. bool(true)
  40. int(1)
  41. array(3) {
  42. [0]=>
  43. array(1) {
  44. [0]=>
  45. string(3) "1,2"
  46. }
  47. [1]=>
  48. array(1) {
  49. [0]=>
  50. string(1) "1"
  51. }
  52. [2]=>
  53. array(1) {
  54. [0]=>
  55. string(1) "2"
  56. }
  57. }
  58. bool(true)
  59. int(2)
  60. array(3) {
  61. [0]=>
  62. array(1) {
  63. [0]=>
  64. string(3) "1,2"
  65. }
  66. [1]=>
  67. array(1) {
  68. [0]=>
  69. string(1) "1"
  70. }
  71. [2]=>
  72. array(1) {
  73. [0]=>
  74. string(1) "2"
  75. }
  76. }
  77. bool(true)
  78. bool(true)
  79. bool(false)
  80. bool(true)
  81. bool(true)
  82. bool(true)
  83. bool(true)
  84. int(0)
  85. array(2) {
  86. [0]=>
  87. array(1) {
  88. [0]=>
  89. string(1) "1"
  90. }
  91. [1]=>
  92. array(1) {
  93. [0]=>
  94. string(1) "1"
  95. }
  96. }
  97. bool(true)
  98. int(1)
  99. array(2) {
  100. [0]=>
  101. array(2) {
  102. [0]=>
  103. string(1) "1"
  104. [1]=>
  105. string(1) "2"
  106. }
  107. [1]=>
  108. array(2) {
  109. [0]=>
  110. string(1) "1"
  111. [1]=>
  112. string(1) "2"
  113. }
  114. }
  115. bool(true)
  116. int(2)
  117. array(2) {
  118. [0]=>
  119. array(3) {
  120. [0]=>
  121. string(1) "1"
  122. [1]=>
  123. string(1) "2"
  124. [2]=>
  125. string(1) "3"
  126. }
  127. [1]=>
  128. array(3) {
  129. [0]=>
  130. string(1) "1"
  131. [1]=>
  132. string(1) "2"
  133. [2]=>
  134. string(1) "3"
  135. }
  136. }
  137. bool(true)
  138. bool(true)
  139. bool(false)
  140. bool(true)
  141. bool(true)
  142. bool(true)
  143. object(ArrayIterator)#%d (1) {
  144. ["storage":"ArrayIterator":private]=>
  145. array(9) {
  146. [0]=>
  147. %s(1) "1"
  148. [1]=>
  149. %s(3) "1,2"
  150. [2]=>
  151. %s(5) "1,2,3"
  152. [3]=>
  153. %s(0) ""
  154. [4]=>
  155. NULL
  156. [5]=>
  157. array(0) {
  158. }
  159. [6]=>
  160. %s(6) "FooBar"
  161. [7]=>
  162. %s(1) ","
  163. [8]=>
  164. %s(2) ",,"
  165. }
  166. }