iterator_052.phpt 2.3 KB

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