bug54089.phpt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. --TEST--
  2. Bug #54089 (token_get_all() does not stop after __halt_compiler)
  3. --EXTENSIONS--
  4. tokenizer
  5. --FILE--
  6. <?php
  7. $codes = array(
  8. "<?php __halt_compiler",
  9. "<?php __halt_compiler(",
  10. "<?php __halt_compiler();",
  11. "<?php __halt_compiler();ABC",
  12. "<?php __halt_compiler\n(\n)\n;ABC",
  13. "<?php __halt_compiler\nabc\ndef\nghi ABC",
  14. );
  15. foreach ($codes as $code) {
  16. $tokens = token_get_all($code);
  17. var_dump($tokens);
  18. $code = '';
  19. foreach ($tokens as $t)
  20. {
  21. $code .= isset($t[1]) ? $t[1] : $t;
  22. }
  23. var_dump($code);
  24. }
  25. ?>
  26. --EXPECTF--
  27. array(2) {
  28. [0]=>
  29. array(3) {
  30. [0]=>
  31. int(%d)
  32. [1]=>
  33. string(6) "<?php "
  34. [2]=>
  35. int(1)
  36. }
  37. [1]=>
  38. array(3) {
  39. [0]=>
  40. int(%d)
  41. [1]=>
  42. string(15) "__halt_compiler"
  43. [2]=>
  44. int(1)
  45. }
  46. }
  47. string(21) "<?php __halt_compiler"
  48. array(3) {
  49. [0]=>
  50. array(3) {
  51. [0]=>
  52. int(%d)
  53. [1]=>
  54. string(6) "<?php "
  55. [2]=>
  56. int(1)
  57. }
  58. [1]=>
  59. array(3) {
  60. [0]=>
  61. int(%d)
  62. [1]=>
  63. string(15) "__halt_compiler"
  64. [2]=>
  65. int(1)
  66. }
  67. [2]=>
  68. string(1) "("
  69. }
  70. string(22) "<?php __halt_compiler("
  71. array(5) {
  72. [0]=>
  73. array(3) {
  74. [0]=>
  75. int(%d)
  76. [1]=>
  77. string(6) "<?php "
  78. [2]=>
  79. int(1)
  80. }
  81. [1]=>
  82. array(3) {
  83. [0]=>
  84. int(%d)
  85. [1]=>
  86. string(15) "__halt_compiler"
  87. [2]=>
  88. int(1)
  89. }
  90. [2]=>
  91. string(1) "("
  92. [3]=>
  93. string(1) ")"
  94. [4]=>
  95. string(1) ";"
  96. }
  97. string(24) "<?php __halt_compiler();"
  98. array(6) {
  99. [0]=>
  100. array(3) {
  101. [0]=>
  102. int(%d)
  103. [1]=>
  104. string(6) "<?php "
  105. [2]=>
  106. int(1)
  107. }
  108. [1]=>
  109. array(3) {
  110. [0]=>
  111. int(%d)
  112. [1]=>
  113. string(15) "__halt_compiler"
  114. [2]=>
  115. int(1)
  116. }
  117. [2]=>
  118. string(1) "("
  119. [3]=>
  120. string(1) ")"
  121. [4]=>
  122. string(1) ";"
  123. [5]=>
  124. array(3) {
  125. [0]=>
  126. int(%d)
  127. [1]=>
  128. string(3) "ABC"
  129. [2]=>
  130. int(1)
  131. }
  132. }
  133. string(27) "<?php __halt_compiler();ABC"
  134. array(9) {
  135. [0]=>
  136. array(3) {
  137. [0]=>
  138. int(%d)
  139. [1]=>
  140. string(6) "<?php "
  141. [2]=>
  142. int(1)
  143. }
  144. [1]=>
  145. array(3) {
  146. [0]=>
  147. int(%d)
  148. [1]=>
  149. string(15) "__halt_compiler"
  150. [2]=>
  151. int(1)
  152. }
  153. [2]=>
  154. array(3) {
  155. [0]=>
  156. int(%d)
  157. [1]=>
  158. string(1) "
  159. "
  160. [2]=>
  161. int(1)
  162. }
  163. [3]=>
  164. string(1) "("
  165. [4]=>
  166. array(3) {
  167. [0]=>
  168. int(%d)
  169. [1]=>
  170. string(1) "
  171. "
  172. [2]=>
  173. int(2)
  174. }
  175. [5]=>
  176. string(1) ")"
  177. [6]=>
  178. array(3) {
  179. [0]=>
  180. int(%d)
  181. [1]=>
  182. string(1) "
  183. "
  184. [2]=>
  185. int(3)
  186. }
  187. [7]=>
  188. string(1) ";"
  189. [8]=>
  190. array(3) {
  191. [0]=>
  192. int(%d)
  193. [1]=>
  194. string(3) "ABC"
  195. [2]=>
  196. int(4)
  197. }
  198. }
  199. string(30) "<?php __halt_compiler
  200. (
  201. )
  202. ;ABC"
  203. array(9) {
  204. [0]=>
  205. array(3) {
  206. [0]=>
  207. int(%d)
  208. [1]=>
  209. string(6) "<?php "
  210. [2]=>
  211. int(1)
  212. }
  213. [1]=>
  214. array(3) {
  215. [0]=>
  216. int(%d)
  217. [1]=>
  218. string(15) "__halt_compiler"
  219. [2]=>
  220. int(1)
  221. }
  222. [2]=>
  223. array(3) {
  224. [0]=>
  225. int(%d)
  226. [1]=>
  227. string(1) "
  228. "
  229. [2]=>
  230. int(1)
  231. }
  232. [3]=>
  233. array(3) {
  234. [0]=>
  235. int(%d)
  236. [1]=>
  237. string(3) "abc"
  238. [2]=>
  239. int(2)
  240. }
  241. [4]=>
  242. array(3) {
  243. [0]=>
  244. int(%d)
  245. [1]=>
  246. string(1) "
  247. "
  248. [2]=>
  249. int(2)
  250. }
  251. [5]=>
  252. array(3) {
  253. [0]=>
  254. int(%d)
  255. [1]=>
  256. string(3) "def"
  257. [2]=>
  258. int(3)
  259. }
  260. [6]=>
  261. array(3) {
  262. [0]=>
  263. int(%d)
  264. [1]=>
  265. string(1) "
  266. "
  267. [2]=>
  268. int(3)
  269. }
  270. [7]=>
  271. array(3) {
  272. [0]=>
  273. int(%d)
  274. [1]=>
  275. string(3) "ghi"
  276. [2]=>
  277. int(4)
  278. }
  279. [8]=>
  280. array(3) {
  281. [0]=>
  282. int(%d)
  283. [1]=>
  284. string(4) " ABC"
  285. [2]=>
  286. int(4)
  287. }
  288. }
  289. string(37) "<?php __halt_compiler
  290. abc
  291. def
  292. ghi ABC"