parse_str_basic3.phpt 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. --TEST--
  2. Test parse_str() function : basic functionality
  3. --INI--
  4. max_input_vars=100
  5. filter.default=unsafe_raw
  6. --FILE--
  7. <?php
  8. /* Prototype : void parse_str ( string $str [, array &$arr ] )
  9. * Description: Parses the string into variables
  10. * Source code: ext/standard/string.c
  11. */
  12. echo "*** Testing parse_str() : basic functionality ***\n";
  13. echo "\nTest string with array values\n";
  14. $s1 = "first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last";
  15. var_dump(parse_str($s1));
  16. var_dump($first, $a, $b, $c);
  17. echo "\nTest string with array values and results array\n";
  18. $s1 = "first=abc&a[]=123&a[]=false&b[]=str&c[]=3.5&a[]=last";
  19. var_dump(parse_str($s1, $res3_array));
  20. var_dump($res3_array);
  21. echo "\nTest string containing numerical array keys\n";
  22. $str = "arr[1]=sid&arr[4]=bill";
  23. var_dump(parse_str($str, $res));
  24. var_dump($res);
  25. echo "\nTest string containing associative keys\n";
  26. $str = "arr[first]=sid&arr[forth]=bill";
  27. var_dump(parse_str($str, $res));
  28. var_dump($res);
  29. echo "\nTest string with array values with same name as existing variable\n";
  30. $a = 9999;
  31. $s1 = "a[]=123&a[]=false&a[]=last";
  32. var_dump(parse_str($s1));
  33. var_dump($a);
  34. echo "\nTest string with non-array value with same name as existing array variable\n";
  35. $a = array(10,11,12,13);
  36. $s1 = "a=999";
  37. parse_str($s1);
  38. var_dump($a);
  39. echo "\nTest string with encoded data\n";
  40. $s1 = "a=%3c%3d%3d%20%20foo+bar++%3d%3d%3e&b=%23%23%23Hello+World%23%23%23";
  41. parse_str($s1);
  42. var_dump($a, $b);
  43. echo "\nTest string with single quotes characters\n";
  44. $s1 = "firstname=Bill&surname=O%27Reilly";
  45. var_dump(parse_str($s1));
  46. var_dump($firstname, $surname);
  47. echo "\nTest string with backslash characters\n";
  48. $s1 = "sum=10%5c2%3d5";
  49. var_dump(parse_str($s1));
  50. var_dump($sum);
  51. echo "\nTest string with double quotes data\n";
  52. $s1 = "str=A+string+with+%22quoted%22+strings";
  53. var_dump(parse_str($s1));
  54. var_dump($str);
  55. echo "\nTest string with nulls\n";
  56. $s1 = "str=A%20string%20with%20containing%20%00%00%00%20nulls";
  57. var_dump(parse_str($s1));
  58. var_dump($str);
  59. echo "\nTest string with 2-dim array with numeric keys\n";
  60. $str = "arr[3][4]=sid&arr[3][6]=fred";
  61. var_dump(parse_str($str, $res));
  62. var_dump($res);
  63. echo "\nTest string with 2-dim array with null keys\n";
  64. $str = "arr[][]=sid&arr[][]=fred";
  65. var_dump(parse_str($str, $res));
  66. var_dump($res);
  67. echo "\nTest string with 2-dim array with non-numeric keys\n";
  68. $str = "arr[one][four]=sid&arr[three][six]=fred";
  69. var_dump(parse_str($str, $res));
  70. var_dump($res);
  71. echo "\nTest string with 3-dim array with numeric keys\n";
  72. $str = "arr[1][2][3]=sid&arr[1][2][6]=fred";
  73. var_dump(parse_str($str, $res));
  74. var_dump($res);
  75. ?>
  76. ===DONE===
  77. --EXPECTF--
  78. *** Testing parse_str() : basic functionality ***
  79. Test string with array values
  80. NULL
  81. string(3) "abc"
  82. array(3) {
  83. [0]=>
  84. string(3) "123"
  85. [1]=>
  86. string(5) "false"
  87. [2]=>
  88. string(4) "last"
  89. }
  90. array(1) {
  91. [0]=>
  92. string(3) "str"
  93. }
  94. array(1) {
  95. [0]=>
  96. string(3) "3.5"
  97. }
  98. Test string with array values and results array
  99. NULL
  100. array(4) {
  101. ["first"]=>
  102. string(3) "abc"
  103. ["a"]=>
  104. array(3) {
  105. [0]=>
  106. string(3) "123"
  107. [1]=>
  108. string(5) "false"
  109. [2]=>
  110. string(4) "last"
  111. }
  112. ["b"]=>
  113. array(1) {
  114. [0]=>
  115. string(3) "str"
  116. }
  117. ["c"]=>
  118. array(1) {
  119. [0]=>
  120. string(3) "3.5"
  121. }
  122. }
  123. Test string containing numerical array keys
  124. NULL
  125. array(1) {
  126. ["arr"]=>
  127. array(2) {
  128. [1]=>
  129. string(3) "sid"
  130. [4]=>
  131. string(4) "bill"
  132. }
  133. }
  134. Test string containing associative keys
  135. NULL
  136. array(1) {
  137. ["arr"]=>
  138. array(2) {
  139. ["first"]=>
  140. string(3) "sid"
  141. ["forth"]=>
  142. string(4) "bill"
  143. }
  144. }
  145. Test string with array values with same name as existing variable
  146. NULL
  147. array(3) {
  148. [0]=>
  149. string(3) "123"
  150. [1]=>
  151. string(5) "false"
  152. [2]=>
  153. string(4) "last"
  154. }
  155. Test string with non-array value with same name as existing array variable
  156. string(3) "999"
  157. Test string with encoded data
  158. string(17) "<== foo bar ==>"
  159. string(17) "###Hello World###"
  160. Test string with single quotes characters
  161. NULL
  162. string(4) "Bill"
  163. string(8) "O'Reilly"
  164. Test string with backslash characters
  165. NULL
  166. string(6) "10\2=5"
  167. Test string with double quotes data
  168. NULL
  169. string(30) "A string with "quoted" strings"
  170. Test string with nulls
  171. NULL
  172. string(34) "A string with containing ��� nulls"
  173. Test string with 2-dim array with numeric keys
  174. NULL
  175. array(1) {
  176. ["arr"]=>
  177. array(1) {
  178. [3]=>
  179. array(2) {
  180. [4]=>
  181. string(3) "sid"
  182. [6]=>
  183. string(4) "fred"
  184. }
  185. }
  186. }
  187. Test string with 2-dim array with null keys
  188. NULL
  189. array(1) {
  190. ["arr"]=>
  191. array(2) {
  192. [0]=>
  193. array(1) {
  194. [0]=>
  195. string(3) "sid"
  196. }
  197. [1]=>
  198. array(1) {
  199. [0]=>
  200. string(4) "fred"
  201. }
  202. }
  203. }
  204. Test string with 2-dim array with non-numeric keys
  205. NULL
  206. array(1) {
  207. ["arr"]=>
  208. array(2) {
  209. ["one"]=>
  210. array(1) {
  211. ["four"]=>
  212. string(3) "sid"
  213. }
  214. ["three"]=>
  215. array(1) {
  216. ["six"]=>
  217. string(4) "fred"
  218. }
  219. }
  220. }
  221. Test string with 3-dim array with numeric keys
  222. NULL
  223. array(1) {
  224. ["arr"]=>
  225. array(1) {
  226. [1]=>
  227. array(1) {
  228. [2]=>
  229. array(2) {
  230. [3]=>
  231. string(3) "sid"
  232. [6]=>
  233. string(4) "fred"
  234. }
  235. }
  236. }
  237. }
  238. ===DONE===