2 Testing substr() function
6 /* Prototype: string substr( string str, int start[, int length] )
7 * Description: Returns the portion of string specified by the start and length parameters.
10 $strings_array = array( NULL, "", 12345, "abcdef", "123abc", "_123abc");
13 foreach ($strings_array as $str) {
14 /* variations with two arguments */
15 /* start values >, < and = 0 */
17 echo ("\n--- Iteration ".$counter." ---\n");
18 echo ("\n-- Variations for two arguments --\n");
19 var_dump ( substr($str, 1) );
20 var_dump ( substr($str, 0) );
21 var_dump ( substr($str, -2) );
23 /* variations with three arguments */
24 /* start value variations with length values */
26 echo ("\n-- Variations for three arguments --\n");
27 var_dump ( substr($str, 1, 3) );
28 var_dump ( substr($str, 1, 0) );
29 var_dump ( substr($str, 1, -3) );
30 var_dump ( substr($str, 0, 3) );
31 var_dump ( substr($str, 0, 0) );
32 var_dump ( substr($str, 0, -3) );
33 var_dump ( substr($str, -2, 3) );
34 var_dump ( substr($str, -2, 0 ) );
35 var_dump ( substr($str, -2, -3) );
40 /* variation of start and length to point to same element */
41 echo ("\n*** Testing for variations of start and length to point to same element ***\n");
42 var_dump (substr("abcde" , 2, -2) );
43 var_dump (substr("abcde" , -3, -2) );
45 /* Testing to return empty string when start denotes the position beyond the truncation (set by negative length) */
46 echo ("\n*** Testing for start > truncation ***\n");
47 var_dump (substr("abcdef" , 4, -4) );
49 /* String with null character */
50 echo ("\n*** Testing for string with null characters ***\n");
51 var_dump (substr("abc\x0xy\x0z" ,2) );
53 /* String with international characters */
54 echo ("\n*** Testing for string with international characters ***\n");
55 var_dump (substr('\xIñtërnâtiônàlizætiøn',3) );
57 /* start <0 && -start > length */
58 echo "\n*** Start before the first char ***\n";
59 var_dump (substr("abcd" , -8) );
61 /* Omitting length and passing a NULL length */
62 echo "\n*** Omitting length or using NULL length ***\n";
63 var_dump (substr("abcdef" , 2) );
64 var_dump (substr("abcdef" , 2, NULL) );
72 -- Variations for two arguments --
77 -- Variations for three arguments --
90 -- Variations for two arguments --
95 -- Variations for three arguments --
108 -- Variations for two arguments --
113 -- Variations for three arguments --
126 -- Variations for two arguments --
131 -- Variations for three arguments --
144 -- Variations for two arguments --
149 -- Variations for three arguments --
162 -- Variations for two arguments --
167 -- Variations for three arguments --
178 *** Testing for variations of start and length to point to same element ***
182 *** Testing for start > truncation ***
185 *** Testing for string with null characters ***
188 *** Testing for string with international characters ***
189 string(26) "ñtërnâtiônàlizætiøn"
191 *** Start before the first char ***
194 *** Omitting length or using NULL length ***