marks.phpt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. --TEST--
  2. Test support for PCRE marks
  3. --FILE--
  4. <?php
  5. $regex = <<<'REGEX'
  6. /
  7. _ (a) (*MARK:A_MARK) _
  8. | _ (b) _
  9. | _ (c) (*MARK:C_MARK) _
  10. | _ (d) _
  11. /x
  12. REGEX;
  13. var_dump(preg_match($regex, '_c_', $matches));
  14. var_dump($matches);
  15. var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_PATTERN_ORDER));
  16. var_dump($matches);
  17. var_dump(preg_match_all($regex, '_a__b__c__d_', $matches, PREG_SET_ORDER));
  18. var_dump($matches);
  19. var_dump(preg_replace_callback($regex, function($matches) {
  20. var_dump($matches);
  21. return $matches[0];
  22. }, '_a__b__c__d_'));
  23. ?>
  24. --EXPECT--
  25. int(1)
  26. array(5) {
  27. [0]=>
  28. string(3) "_c_"
  29. [1]=>
  30. string(0) ""
  31. [2]=>
  32. string(0) ""
  33. [3]=>
  34. string(1) "c"
  35. ["MARK"]=>
  36. string(6) "C_MARK"
  37. }
  38. int(4)
  39. array(6) {
  40. [0]=>
  41. array(4) {
  42. [0]=>
  43. string(3) "_a_"
  44. [1]=>
  45. string(3) "_b_"
  46. [2]=>
  47. string(3) "_c_"
  48. [3]=>
  49. string(3) "_d_"
  50. }
  51. [1]=>
  52. array(4) {
  53. [0]=>
  54. string(1) "a"
  55. [1]=>
  56. string(0) ""
  57. [2]=>
  58. string(0) ""
  59. [3]=>
  60. string(0) ""
  61. }
  62. [2]=>
  63. array(4) {
  64. [0]=>
  65. string(0) ""
  66. [1]=>
  67. string(1) "b"
  68. [2]=>
  69. string(0) ""
  70. [3]=>
  71. string(0) ""
  72. }
  73. [3]=>
  74. array(4) {
  75. [0]=>
  76. string(0) ""
  77. [1]=>
  78. string(0) ""
  79. [2]=>
  80. string(1) "c"
  81. [3]=>
  82. string(0) ""
  83. }
  84. [4]=>
  85. array(4) {
  86. [0]=>
  87. string(0) ""
  88. [1]=>
  89. string(0) ""
  90. [2]=>
  91. string(0) ""
  92. [3]=>
  93. string(1) "d"
  94. }
  95. ["MARK"]=>
  96. array(2) {
  97. [0]=>
  98. string(6) "A_MARK"
  99. [2]=>
  100. string(6) "C_MARK"
  101. }
  102. }
  103. int(4)
  104. array(4) {
  105. [0]=>
  106. array(3) {
  107. [0]=>
  108. string(3) "_a_"
  109. [1]=>
  110. string(1) "a"
  111. ["MARK"]=>
  112. string(6) "A_MARK"
  113. }
  114. [1]=>
  115. array(3) {
  116. [0]=>
  117. string(3) "_b_"
  118. [1]=>
  119. string(0) ""
  120. [2]=>
  121. string(1) "b"
  122. }
  123. [2]=>
  124. array(5) {
  125. [0]=>
  126. string(3) "_c_"
  127. [1]=>
  128. string(0) ""
  129. [2]=>
  130. string(0) ""
  131. [3]=>
  132. string(1) "c"
  133. ["MARK"]=>
  134. string(6) "C_MARK"
  135. }
  136. [3]=>
  137. array(5) {
  138. [0]=>
  139. string(3) "_d_"
  140. [1]=>
  141. string(0) ""
  142. [2]=>
  143. string(0) ""
  144. [3]=>
  145. string(0) ""
  146. [4]=>
  147. string(1) "d"
  148. }
  149. }
  150. array(3) {
  151. [0]=>
  152. string(3) "_a_"
  153. [1]=>
  154. string(1) "a"
  155. ["MARK"]=>
  156. string(6) "A_MARK"
  157. }
  158. array(3) {
  159. [0]=>
  160. string(3) "_b_"
  161. [1]=>
  162. string(0) ""
  163. [2]=>
  164. string(1) "b"
  165. }
  166. array(5) {
  167. [0]=>
  168. string(3) "_c_"
  169. [1]=>
  170. string(0) ""
  171. [2]=>
  172. string(0) ""
  173. [3]=>
  174. string(1) "c"
  175. ["MARK"]=>
  176. string(6) "C_MARK"
  177. }
  178. array(5) {
  179. [0]=>
  180. string(3) "_d_"
  181. [1]=>
  182. string(0) ""
  183. [2]=>
  184. string(0) ""
  185. [3]=>
  186. string(0) ""
  187. [4]=>
  188. string(1) "d"
  189. }
  190. string(12) "_a__b__c__d_"