004.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. --TEST--
  2. abusing pcre
  3. --FILE--
  4. <?php
  5. var_dump(preg_match_all('/((?:(?:unsigned|struct)\s+)?\w+)(?:\s*(\*+)\s+|\s+(\**))(\w+(?:\[\s*\w*\s*\])?)\s*(?:(=)[^,;]+)?((?:\s*,\s*\**\s*\w+(?:\[\s*\w*\s*\])?\s*(?:=[^,;]+)?)*)\s*;/S', 'unsigned int xpto = 124; short a, b;', $m, PREG_SET_ORDER));
  6. var_dump($m);
  7. var_dump(preg_match_all('/(?:\([^)]+\))?(&?)([\w>.()-]+(?:\[\w+\])?)\s*,?((?:\)*\s*=)?)/S', '&a, b, &c', $m, PREG_SET_ORDER));
  8. var_dump($m);
  9. var_dump(preg_match_all('/zend_parse_parameters(?:_ex\s*\([^,]+,[^,]+|\s*\([^,]+),\s*"([^"]*)"\s*,\s*([^{;]*)/S', 'zend_parse_parameters( 0, "addd|s/", a, b, &c);', $m, PREG_SET_ORDER | PREG_OFFSET_CAPTURE));
  10. var_dump($m);
  11. var_dump(preg_split('/PHP_(?:NAMED_)?(?:FUNCTION|METHOD)\s*\((\w+(?:,\s*\w+)?)\)/S', "PHP_FUNCTION(s, preg_match)\n{\nlalala", -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE));
  12. ?>
  13. --EXPECT--
  14. int(2)
  15. array(2) {
  16. [0]=>
  17. array(7) {
  18. [0]=>
  19. string(24) "unsigned int xpto = 124;"
  20. [1]=>
  21. string(12) "unsigned int"
  22. [2]=>
  23. string(0) ""
  24. [3]=>
  25. string(0) ""
  26. [4]=>
  27. string(4) "xpto"
  28. [5]=>
  29. string(1) "="
  30. [6]=>
  31. string(0) ""
  32. }
  33. [1]=>
  34. array(7) {
  35. [0]=>
  36. string(11) "short a, b;"
  37. [1]=>
  38. string(5) "short"
  39. [2]=>
  40. string(0) ""
  41. [3]=>
  42. string(0) ""
  43. [4]=>
  44. string(1) "a"
  45. [5]=>
  46. string(0) ""
  47. [6]=>
  48. string(3) ", b"
  49. }
  50. }
  51. int(3)
  52. array(3) {
  53. [0]=>
  54. array(4) {
  55. [0]=>
  56. string(3) "&a,"
  57. [1]=>
  58. string(1) "&"
  59. [2]=>
  60. string(1) "a"
  61. [3]=>
  62. string(0) ""
  63. }
  64. [1]=>
  65. array(4) {
  66. [0]=>
  67. string(2) "b,"
  68. [1]=>
  69. string(0) ""
  70. [2]=>
  71. string(1) "b"
  72. [3]=>
  73. string(0) ""
  74. }
  75. [2]=>
  76. array(4) {
  77. [0]=>
  78. string(2) "&c"
  79. [1]=>
  80. string(1) "&"
  81. [2]=>
  82. string(1) "c"
  83. [3]=>
  84. string(0) ""
  85. }
  86. }
  87. int(1)
  88. array(1) {
  89. [0]=>
  90. array(3) {
  91. [0]=>
  92. array(2) {
  93. [0]=>
  94. string(46) "zend_parse_parameters( 0, "addd|s/", a, b, &c)"
  95. [1]=>
  96. int(0)
  97. }
  98. [1]=>
  99. array(2) {
  100. [0]=>
  101. string(7) "addd|s/"
  102. [1]=>
  103. int(27)
  104. }
  105. [2]=>
  106. array(2) {
  107. [0]=>
  108. string(9) "a, b, &c)"
  109. [1]=>
  110. int(37)
  111. }
  112. }
  113. }
  114. array(3) {
  115. [0]=>
  116. array(2) {
  117. [0]=>
  118. string(0) ""
  119. [1]=>
  120. int(0)
  121. }
  122. [1]=>
  123. array(2) {
  124. [0]=>
  125. string(13) "s, preg_match"
  126. [1]=>
  127. int(13)
  128. }
  129. [2]=>
  130. array(2) {
  131. [0]=>
  132. string(9) "
  133. {
  134. lalala"
  135. [1]=>
  136. int(27)
  137. }
  138. }