bug61780_2.phpt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. --TEST--
  2. Bug #61780 (Inconsistent PCRE captures in match results): named subpatterns
  3. --FILE--
  4. <?php
  5. preg_match('/(?<a>4)?(?<b>2)?\d/', '23456', $matches, PREG_UNMATCHED_AS_NULL);
  6. var_export($matches);
  7. echo "\n\n";
  8. preg_match('/(?<a>4)?(?<b>2)?\d/', '23456', $matches, PREG_OFFSET_CAPTURE | PREG_UNMATCHED_AS_NULL);
  9. var_export($matches);
  10. echo "\n\n";
  11. preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_UNMATCHED_AS_NULL);
  12. var_export($matches);
  13. echo "\n\n";
  14. preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_OFFSET_CAPTURE | PREG_UNMATCHED_AS_NULL);
  15. var_export($matches);
  16. echo "\n\n";
  17. preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_SET_ORDER | PREG_UNMATCHED_AS_NULL);
  18. var_export($matches);
  19. echo "\n\n";
  20. preg_match_all('/(?<a>4)?(?<b>2)?\d/', '123456', $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE | PREG_UNMATCHED_AS_NULL);
  21. var_export($matches);
  22. ?>
  23. --EXPECT--
  24. array (
  25. 0 => '23',
  26. 'a' => NULL,
  27. 1 => NULL,
  28. 'b' => '2',
  29. 2 => '2',
  30. )
  31. array (
  32. 0 =>
  33. array (
  34. 0 => '23',
  35. 1 => 0,
  36. ),
  37. 'a' =>
  38. array (
  39. 0 => NULL,
  40. 1 => -1,
  41. ),
  42. 1 =>
  43. array (
  44. 0 => NULL,
  45. 1 => -1,
  46. ),
  47. 'b' =>
  48. array (
  49. 0 => '2',
  50. 1 => 0,
  51. ),
  52. 2 =>
  53. array (
  54. 0 => '2',
  55. 1 => 0,
  56. ),
  57. )
  58. array (
  59. 0 =>
  60. array (
  61. 0 => '1',
  62. 1 => '23',
  63. 2 => '45',
  64. 3 => '6',
  65. ),
  66. 'a' =>
  67. array (
  68. 0 => NULL,
  69. 1 => NULL,
  70. 2 => '4',
  71. 3 => NULL,
  72. ),
  73. 1 =>
  74. array (
  75. 0 => NULL,
  76. 1 => NULL,
  77. 2 => '4',
  78. 3 => NULL,
  79. ),
  80. 'b' =>
  81. array (
  82. 0 => NULL,
  83. 1 => '2',
  84. 2 => NULL,
  85. 3 => NULL,
  86. ),
  87. 2 =>
  88. array (
  89. 0 => NULL,
  90. 1 => '2',
  91. 2 => NULL,
  92. 3 => NULL,
  93. ),
  94. )
  95. array (
  96. 0 =>
  97. array (
  98. 0 =>
  99. array (
  100. 0 => '1',
  101. 1 => 0,
  102. ),
  103. 1 =>
  104. array (
  105. 0 => '23',
  106. 1 => 1,
  107. ),
  108. 2 =>
  109. array (
  110. 0 => '45',
  111. 1 => 3,
  112. ),
  113. 3 =>
  114. array (
  115. 0 => '6',
  116. 1 => 5,
  117. ),
  118. ),
  119. 'a' =>
  120. array (
  121. 0 =>
  122. array (
  123. 0 => NULL,
  124. 1 => -1,
  125. ),
  126. 1 =>
  127. array (
  128. 0 => NULL,
  129. 1 => -1,
  130. ),
  131. 2 =>
  132. array (
  133. 0 => '4',
  134. 1 => 3,
  135. ),
  136. 3 =>
  137. array (
  138. 0 => NULL,
  139. 1 => -1,
  140. ),
  141. ),
  142. 1 =>
  143. array (
  144. 0 =>
  145. array (
  146. 0 => NULL,
  147. 1 => -1,
  148. ),
  149. 1 =>
  150. array (
  151. 0 => NULL,
  152. 1 => -1,
  153. ),
  154. 2 =>
  155. array (
  156. 0 => '4',
  157. 1 => 3,
  158. ),
  159. 3 =>
  160. array (
  161. 0 => NULL,
  162. 1 => -1,
  163. ),
  164. ),
  165. 'b' =>
  166. array (
  167. 0 =>
  168. array (
  169. 0 => NULL,
  170. 1 => -1,
  171. ),
  172. 1 =>
  173. array (
  174. 0 => '2',
  175. 1 => 1,
  176. ),
  177. 2 =>
  178. array (
  179. 0 => NULL,
  180. 1 => -1,
  181. ),
  182. 3 =>
  183. array (
  184. 0 => NULL,
  185. 1 => -1,
  186. ),
  187. ),
  188. 2 =>
  189. array (
  190. 0 =>
  191. array (
  192. 0 => NULL,
  193. 1 => -1,
  194. ),
  195. 1 =>
  196. array (
  197. 0 => '2',
  198. 1 => 1,
  199. ),
  200. 2 =>
  201. array (
  202. 0 => NULL,
  203. 1 => -1,
  204. ),
  205. 3 =>
  206. array (
  207. 0 => NULL,
  208. 1 => -1,
  209. ),
  210. ),
  211. )
  212. array (
  213. 0 =>
  214. array (
  215. 0 => '1',
  216. 'a' => NULL,
  217. 1 => NULL,
  218. 'b' => NULL,
  219. 2 => NULL,
  220. ),
  221. 1 =>
  222. array (
  223. 0 => '23',
  224. 'a' => NULL,
  225. 1 => NULL,
  226. 'b' => '2',
  227. 2 => '2',
  228. ),
  229. 2 =>
  230. array (
  231. 0 => '45',
  232. 'a' => '4',
  233. 1 => '4',
  234. 'b' => NULL,
  235. 2 => NULL,
  236. ),
  237. 3 =>
  238. array (
  239. 0 => '6',
  240. 'a' => NULL,
  241. 1 => NULL,
  242. 'b' => NULL,
  243. 2 => NULL,
  244. ),
  245. )
  246. array (
  247. 0 =>
  248. array (
  249. 0 =>
  250. array (
  251. 0 => '1',
  252. 1 => 0,
  253. ),
  254. 'a' =>
  255. array (
  256. 0 => NULL,
  257. 1 => -1,
  258. ),
  259. 1 =>
  260. array (
  261. 0 => NULL,
  262. 1 => -1,
  263. ),
  264. 'b' =>
  265. array (
  266. 0 => NULL,
  267. 1 => -1,
  268. ),
  269. 2 =>
  270. array (
  271. 0 => NULL,
  272. 1 => -1,
  273. ),
  274. ),
  275. 1 =>
  276. array (
  277. 0 =>
  278. array (
  279. 0 => '23',
  280. 1 => 1,
  281. ),
  282. 'a' =>
  283. array (
  284. 0 => NULL,
  285. 1 => -1,
  286. ),
  287. 1 =>
  288. array (
  289. 0 => NULL,
  290. 1 => -1,
  291. ),
  292. 'b' =>
  293. array (
  294. 0 => '2',
  295. 1 => 1,
  296. ),
  297. 2 =>
  298. array (
  299. 0 => '2',
  300. 1 => 1,
  301. ),
  302. ),
  303. 2 =>
  304. array (
  305. 0 =>
  306. array (
  307. 0 => '45',
  308. 1 => 3,
  309. ),
  310. 'a' =>
  311. array (
  312. 0 => '4',
  313. 1 => 3,
  314. ),
  315. 1 =>
  316. array (
  317. 0 => '4',
  318. 1 => 3,
  319. ),
  320. 'b' =>
  321. array (
  322. 0 => NULL,
  323. 1 => -1,
  324. ),
  325. 2 =>
  326. array (
  327. 0 => NULL,
  328. 1 => -1,
  329. ),
  330. ),
  331. 3 =>
  332. array (
  333. 0 =>
  334. array (
  335. 0 => '6',
  336. 1 => 5,
  337. ),
  338. 'a' =>
  339. array (
  340. 0 => NULL,
  341. 1 => -1,
  342. ),
  343. 1 =>
  344. array (
  345. 0 => NULL,
  346. 1 => -1,
  347. ),
  348. 'b' =>
  349. array (
  350. 0 => NULL,
  351. 1 => -1,
  352. ),
  353. 2 =>
  354. array (
  355. 0 => NULL,
  356. 1 => -1,
  357. ),
  358. ),
  359. )