substr.phpt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. --TEST--
  2. Testing substr() function
  3. --FILE--
  4. <?php
  5. $strings_array = array( "", 12345, "abcdef", "123abc", "_123abc");
  6. $counter = 1;
  7. foreach ($strings_array as $str) {
  8. /* variations with two arguments */
  9. /* start values >, < and = 0 */
  10. echo ("\n--- Iteration ".$counter." ---\n");
  11. echo ("\n-- Variations for two arguments --\n");
  12. var_dump ( substr($str, 1) );
  13. var_dump ( substr($str, 0) );
  14. var_dump ( substr($str, -2) );
  15. /* variations with three arguments */
  16. /* start value variations with length values */
  17. echo ("\n-- Variations for three arguments --\n");
  18. var_dump ( substr($str, 1, 3) );
  19. var_dump ( substr($str, 1, 0) );
  20. var_dump ( substr($str, 1, -3) );
  21. var_dump ( substr($str, 0, 3) );
  22. var_dump ( substr($str, 0, 0) );
  23. var_dump ( substr($str, 0, -3) );
  24. var_dump ( substr($str, -2, 3) );
  25. var_dump ( substr($str, -2, 0 ) );
  26. var_dump ( substr($str, -2, -3) );
  27. $counter++;
  28. }
  29. /* variation of start and length to point to same element */
  30. echo ("\n*** Testing for variations of start and length to point to same element ***\n");
  31. var_dump (substr("abcde" , 2, -2) );
  32. var_dump (substr("abcde" , -3, -2) );
  33. /* Testing to return empty string when start denotes the position beyond the truncation (set by negative length) */
  34. echo ("\n*** Testing for start > truncation ***\n");
  35. var_dump (substr("abcdef" , 4, -4) );
  36. /* String with null character */
  37. echo ("\n*** Testing for string with null characters ***\n");
  38. var_dump (substr("abc\x0xy\x0z" ,2) );
  39. /* String with international characters */
  40. echo ("\n*** Testing for string with international characters ***\n");
  41. var_dump (substr('\xIñtërnâtiônàlizætiøn',3) );
  42. /* start <0 && -start > length */
  43. echo "\n*** Start before the first char ***\n";
  44. var_dump (substr("abcd" , -8) );
  45. /* Omitting length and passing a NULL length */
  46. echo "\n*** Omitting length or using NULL length ***\n";
  47. var_dump (substr("abcdef" , 2) );
  48. var_dump (substr("abcdef" , 2, NULL) );
  49. echo"\nDone";
  50. ?>
  51. --EXPECTF--
  52. --- Iteration 1 ---
  53. -- Variations for two arguments --
  54. string(0) ""
  55. string(0) ""
  56. string(0) ""
  57. -- Variations for three arguments --
  58. string(0) ""
  59. string(0) ""
  60. string(0) ""
  61. string(0) ""
  62. string(0) ""
  63. string(0) ""
  64. string(0) ""
  65. string(0) ""
  66. string(0) ""
  67. --- Iteration 2 ---
  68. -- Variations for two arguments --
  69. string(4) "2345"
  70. string(5) "12345"
  71. string(2) "45"
  72. -- Variations for three arguments --
  73. string(3) "234"
  74. string(0) ""
  75. string(1) "2"
  76. string(3) "123"
  77. string(0) ""
  78. string(2) "12"
  79. string(2) "45"
  80. string(0) ""
  81. string(0) ""
  82. --- Iteration 3 ---
  83. -- Variations for two arguments --
  84. string(5) "bcdef"
  85. string(6) "abcdef"
  86. string(2) "ef"
  87. -- Variations for three arguments --
  88. string(3) "bcd"
  89. string(0) ""
  90. string(2) "bc"
  91. string(3) "abc"
  92. string(0) ""
  93. string(3) "abc"
  94. string(2) "ef"
  95. string(0) ""
  96. string(0) ""
  97. --- Iteration 4 ---
  98. -- Variations for two arguments --
  99. string(5) "23abc"
  100. string(6) "123abc"
  101. string(2) "bc"
  102. -- Variations for three arguments --
  103. string(3) "23a"
  104. string(0) ""
  105. string(2) "23"
  106. string(3) "123"
  107. string(0) ""
  108. string(3) "123"
  109. string(2) "bc"
  110. string(0) ""
  111. string(0) ""
  112. --- Iteration 5 ---
  113. -- Variations for two arguments --
  114. string(6) "123abc"
  115. string(7) "_123abc"
  116. string(2) "bc"
  117. -- Variations for three arguments --
  118. string(3) "123"
  119. string(0) ""
  120. string(3) "123"
  121. string(3) "_12"
  122. string(0) ""
  123. string(4) "_123"
  124. string(2) "bc"
  125. string(0) ""
  126. string(0) ""
  127. *** Testing for variations of start and length to point to same element ***
  128. string(1) "c"
  129. string(1) "c"
  130. *** Testing for start > truncation ***
  131. string(0) ""
  132. *** Testing for string with null characters ***
  133. string(6) "c%0xy%0z"
  134. *** Testing for string with international characters ***
  135. string(26) "ñtërnâtiônàlizætiøn"
  136. *** Start before the first char ***
  137. string(4) "abcd"
  138. *** Omitting length or using NULL length ***
  139. string(4) "cdef"
  140. string(4) "cdef"
  141. Done