004.phpt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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_replace(array('@//.*@S', '@/\*.*\*/@SsUe'), array('', 'preg_replace("/[^\r\n]+/S", "", \'$0\')'), "hello\n//x \n/*\ns\n*/"));
  12. 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));
  13. ?>
  14. --EXPECTF--
  15. int(2)
  16. array(2) {
  17. [0]=>
  18. array(7) {
  19. [0]=>
  20. string(24) "unsigned int xpto = 124;"
  21. [1]=>
  22. string(12) "unsigned int"
  23. [2]=>
  24. string(0) ""
  25. [3]=>
  26. string(0) ""
  27. [4]=>
  28. string(4) "xpto"
  29. [5]=>
  30. string(1) "="
  31. [6]=>
  32. string(0) ""
  33. }
  34. [1]=>
  35. array(7) {
  36. [0]=>
  37. string(11) "short a, b;"
  38. [1]=>
  39. string(5) "short"
  40. [2]=>
  41. string(0) ""
  42. [3]=>
  43. string(0) ""
  44. [4]=>
  45. string(1) "a"
  46. [5]=>
  47. string(0) ""
  48. [6]=>
  49. string(3) ", b"
  50. }
  51. }
  52. int(3)
  53. array(3) {
  54. [0]=>
  55. array(4) {
  56. [0]=>
  57. string(3) "&a,"
  58. [1]=>
  59. string(1) "&"
  60. [2]=>
  61. string(1) "a"
  62. [3]=>
  63. string(0) ""
  64. }
  65. [1]=>
  66. array(4) {
  67. [0]=>
  68. string(2) "b,"
  69. [1]=>
  70. string(0) ""
  71. [2]=>
  72. string(1) "b"
  73. [3]=>
  74. string(0) ""
  75. }
  76. [2]=>
  77. array(4) {
  78. [0]=>
  79. string(2) "&c"
  80. [1]=>
  81. string(1) "&"
  82. [2]=>
  83. string(1) "c"
  84. [3]=>
  85. string(0) ""
  86. }
  87. }
  88. int(1)
  89. array(1) {
  90. [0]=>
  91. array(3) {
  92. [0]=>
  93. array(2) {
  94. [0]=>
  95. string(46) "zend_parse_parameters( 0, "addd|s/", a, b, &c)"
  96. [1]=>
  97. int(0)
  98. }
  99. [1]=>
  100. array(2) {
  101. [0]=>
  102. string(7) "addd|s/"
  103. [1]=>
  104. int(27)
  105. }
  106. [2]=>
  107. array(2) {
  108. [0]=>
  109. string(9) "a, b, &c)"
  110. [1]=>
  111. int(37)
  112. }
  113. }
  114. }
  115. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in %s on line %d
  116. string(9) "hello
  117. "
  118. array(3) {
  119. [0]=>
  120. array(2) {
  121. [0]=>
  122. string(0) ""
  123. [1]=>
  124. int(0)
  125. }
  126. [1]=>
  127. array(2) {
  128. [0]=>
  129. string(13) "s, preg_match"
  130. [1]=>
  131. int(13)
  132. }
  133. [2]=>
  134. array(2) {
  135. [0]=>
  136. string(9) "
  137. {
  138. lalala"
  139. [1]=>
  140. int(27)
  141. }
  142. }