str_pad.phpt 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. --TEST--
  2. str_pad() function
  3. --INI--
  4. precision=14
  5. --FILE--
  6. <?php
  7. /* Pad a string to a certain length with another string */
  8. echo "\n#### Basic operations ####\n";
  9. $input_string = "str_pad()";
  10. $pad_length = 20;
  11. $pad_string = "-+";
  12. var_dump( str_pad($input_string, $pad_length) ); // default pad_string & pad_type
  13. var_dump( str_pad($input_string, $pad_length, $pad_string) ); // default pad_type
  14. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_LEFT) );
  15. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_RIGHT) );
  16. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_BOTH) );
  17. echo "\n#### variations with input string and pad-length ####\n";
  18. /* different input string variation */
  19. $input_strings = array(
  20. "variation", // normal string
  21. "", // empty string
  22. true, // boolean
  23. 15, // numeric
  24. 15.55, // numeric
  25. "2990" // numeric string
  26. );
  27. /* different pad_lengths */
  28. $pad_lengths = array(
  29. -PHP_INT_MAX, // huge negative value
  30. -1, // negative value
  31. 0, // pad_length < sizeof(input_string)
  32. 9, // pad_length <= sizeof(input_string)
  33. 10, // pad_length > sizeof(input_string)
  34. 16, // pad_length > sizeof(input_string)
  35. );
  36. $pad_string = "=";
  37. /* loop through to use each variant of $pad_length on each element of $input_strings array */
  38. foreach ($input_strings as $input_string ) {
  39. foreach ($pad_lengths as $pad_length ) {
  40. var_dump( str_pad($input_string, $pad_length) ); // default pad_string & pad_type
  41. var_dump( str_pad($input_string, $pad_length, $pad_string) ); // default pad_type
  42. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_LEFT) );
  43. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_RIGHT) );
  44. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_BOTH) );
  45. }
  46. }
  47. echo "\n#### variation with pad string ####\n";
  48. $pad_strings = array ("=", 1, true, "string_pad", 1.5, "\t", '\t');
  49. $input_string="variation";
  50. $pad_length = 16;
  51. foreach ( $pad_strings as $pad_string ) {
  52. var_dump( str_pad($input_string, $pad_length, $pad_string) ); // default pad_type
  53. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_LEFT) );
  54. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_RIGHT) );
  55. var_dump( str_pad($input_string, $pad_length, $pad_string, STR_PAD_BOTH) );
  56. }
  57. echo "\n#### error conditions ####\n";
  58. echo "\n--- empty padding string ---\n";
  59. try {
  60. str_pad($input_string, 12, "");
  61. } catch (\ValueError $e) {
  62. echo $e->getMessage() . "\n";
  63. }
  64. /* bad pad_type - passing an undefined one */
  65. try {
  66. str_pad($input_string, $pad_length, "+", 15);
  67. } catch (\ValueError $e) {
  68. echo $e->getMessage() . "\n";
  69. }
  70. ?>
  71. --EXPECT--
  72. #### Basic operations ####
  73. string(20) "str_pad() "
  74. string(20) "str_pad()-+-+-+-+-+-"
  75. string(20) "-+-+-+-+-+-str_pad()"
  76. string(20) "str_pad()-+-+-+-+-+-"
  77. string(20) "-+-+-str_pad()-+-+-+"
  78. #### variations with input string and pad-length ####
  79. string(9) "variation"
  80. string(9) "variation"
  81. string(9) "variation"
  82. string(9) "variation"
  83. string(9) "variation"
  84. string(9) "variation"
  85. string(9) "variation"
  86. string(9) "variation"
  87. string(9) "variation"
  88. string(9) "variation"
  89. string(9) "variation"
  90. string(9) "variation"
  91. string(9) "variation"
  92. string(9) "variation"
  93. string(9) "variation"
  94. string(9) "variation"
  95. string(9) "variation"
  96. string(9) "variation"
  97. string(9) "variation"
  98. string(9) "variation"
  99. string(10) "variation "
  100. string(10) "variation="
  101. string(10) "=variation"
  102. string(10) "variation="
  103. string(10) "variation="
  104. string(16) "variation "
  105. string(16) "variation======="
  106. string(16) "=======variation"
  107. string(16) "variation======="
  108. string(16) "===variation===="
  109. string(0) ""
  110. string(0) ""
  111. string(0) ""
  112. string(0) ""
  113. string(0) ""
  114. string(0) ""
  115. string(0) ""
  116. string(0) ""
  117. string(0) ""
  118. string(0) ""
  119. string(0) ""
  120. string(0) ""
  121. string(0) ""
  122. string(0) ""
  123. string(0) ""
  124. string(9) " "
  125. string(9) "========="
  126. string(9) "========="
  127. string(9) "========="
  128. string(9) "========="
  129. string(10) " "
  130. string(10) "=========="
  131. string(10) "=========="
  132. string(10) "=========="
  133. string(10) "=========="
  134. string(16) " "
  135. string(16) "================"
  136. string(16) "================"
  137. string(16) "================"
  138. string(16) "================"
  139. string(1) "1"
  140. string(1) "1"
  141. string(1) "1"
  142. string(1) "1"
  143. string(1) "1"
  144. string(1) "1"
  145. string(1) "1"
  146. string(1) "1"
  147. string(1) "1"
  148. string(1) "1"
  149. string(1) "1"
  150. string(1) "1"
  151. string(1) "1"
  152. string(1) "1"
  153. string(1) "1"
  154. string(9) "1 "
  155. string(9) "1========"
  156. string(9) "========1"
  157. string(9) "1========"
  158. string(9) "====1===="
  159. string(10) "1 "
  160. string(10) "1========="
  161. string(10) "=========1"
  162. string(10) "1========="
  163. string(10) "====1====="
  164. string(16) "1 "
  165. string(16) "1==============="
  166. string(16) "===============1"
  167. string(16) "1==============="
  168. string(16) "=======1========"
  169. string(2) "15"
  170. string(2) "15"
  171. string(2) "15"
  172. string(2) "15"
  173. string(2) "15"
  174. string(2) "15"
  175. string(2) "15"
  176. string(2) "15"
  177. string(2) "15"
  178. string(2) "15"
  179. string(2) "15"
  180. string(2) "15"
  181. string(2) "15"
  182. string(2) "15"
  183. string(2) "15"
  184. string(9) "15 "
  185. string(9) "15======="
  186. string(9) "=======15"
  187. string(9) "15======="
  188. string(9) "===15===="
  189. string(10) "15 "
  190. string(10) "15========"
  191. string(10) "========15"
  192. string(10) "15========"
  193. string(10) "====15===="
  194. string(16) "15 "
  195. string(16) "15=============="
  196. string(16) "==============15"
  197. string(16) "15=============="
  198. string(16) "=======15======="
  199. string(5) "15.55"
  200. string(5) "15.55"
  201. string(5) "15.55"
  202. string(5) "15.55"
  203. string(5) "15.55"
  204. string(5) "15.55"
  205. string(5) "15.55"
  206. string(5) "15.55"
  207. string(5) "15.55"
  208. string(5) "15.55"
  209. string(5) "15.55"
  210. string(5) "15.55"
  211. string(5) "15.55"
  212. string(5) "15.55"
  213. string(5) "15.55"
  214. string(9) "15.55 "
  215. string(9) "15.55===="
  216. string(9) "====15.55"
  217. string(9) "15.55===="
  218. string(9) "==15.55=="
  219. string(10) "15.55 "
  220. string(10) "15.55====="
  221. string(10) "=====15.55"
  222. string(10) "15.55====="
  223. string(10) "==15.55==="
  224. string(16) "15.55 "
  225. string(16) "15.55==========="
  226. string(16) "===========15.55"
  227. string(16) "15.55==========="
  228. string(16) "=====15.55======"
  229. string(4) "2990"
  230. string(4) "2990"
  231. string(4) "2990"
  232. string(4) "2990"
  233. string(4) "2990"
  234. string(4) "2990"
  235. string(4) "2990"
  236. string(4) "2990"
  237. string(4) "2990"
  238. string(4) "2990"
  239. string(4) "2990"
  240. string(4) "2990"
  241. string(4) "2990"
  242. string(4) "2990"
  243. string(4) "2990"
  244. string(9) "2990 "
  245. string(9) "2990====="
  246. string(9) "=====2990"
  247. string(9) "2990====="
  248. string(9) "==2990==="
  249. string(10) "2990 "
  250. string(10) "2990======"
  251. string(10) "======2990"
  252. string(10) "2990======"
  253. string(10) "===2990==="
  254. string(16) "2990 "
  255. string(16) "2990============"
  256. string(16) "============2990"
  257. string(16) "2990============"
  258. string(16) "======2990======"
  259. #### variation with pad string ####
  260. string(16) "variation======="
  261. string(16) "=======variation"
  262. string(16) "variation======="
  263. string(16) "===variation===="
  264. string(16) "variation1111111"
  265. string(16) "1111111variation"
  266. string(16) "variation1111111"
  267. string(16) "111variation1111"
  268. string(16) "variation1111111"
  269. string(16) "1111111variation"
  270. string(16) "variation1111111"
  271. string(16) "111variation1111"
  272. string(16) "variationstring_"
  273. string(16) "string_variation"
  274. string(16) "variationstring_"
  275. string(16) "strvariationstri"
  276. string(16) "variation1.51.51"
  277. string(16) "1.51.51variation"
  278. string(16) "variation1.51.51"
  279. string(16) "1.5variation1.51"
  280. string(16) "variation "
  281. string(16) " variation"
  282. string(16) "variation "
  283. string(16) " variation "
  284. string(16) "variation\t\t\t\"
  285. string(16) "\t\t\t\variation"
  286. string(16) "variation\t\t\t\"
  287. string(16) "\t\variation\t\t"
  288. #### error conditions ####
  289. --- empty padding string ---
  290. str_pad(): Argument #3 ($pad_string) must be a non-empty string
  291. str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH