php-src/ext/standard/tests/strings/substr.phpt

226 lines
4.7 KiB
Plaintext
Raw Normal View History

--TEST--
Testing substr() function
--FILE--
<?php
/* Prototype: string substr( string str, int start[, int length] )
* Description: Returns the portion of string specified by the start and length parameters.
*/
$strings_array = array( NULL, "", 12345, "abcdef", "123abc", "_123abc");
/* Testing for error conditions */
echo "*** Testing for error conditions ***\n";
/* Zero Argument */
var_dump( substr() );
/* NULL as Argument */
var_dump( substr(NULL) );
/* Single Argument */
var_dump( substr("abcde") );
/* Scalar Argument */
var_dump( substr(12345) );
/* more than valid number of arguments ( valid are 2 or 3 ) */
var_dump( substr("abcde", 2, 3, 4) );
$counter = 1;
foreach ($strings_array as $str) {
/* variations with two arguments */
/* start values >, < and = 0 */
echo ("\n--- Iteration ".$counter." ---\n");
echo ("\n-- Variations for two arguments --\n");
var_dump ( substr($str, 1) );
var_dump ( substr($str, 0) );
var_dump ( substr($str, -2) );
/* variations with three arguments */
/* start value variations with length values */
echo ("\n-- Variations for three arguments --\n");
var_dump ( substr($str, 1, 3) );
var_dump ( substr($str, 1, 0) );
var_dump ( substr($str, 1, -3) );
var_dump ( substr($str, 0, 3) );
var_dump ( substr($str, 0, 0) );
var_dump ( substr($str, 0, -3) );
var_dump ( substr($str, -2, 3) );
var_dump ( substr($str, -2, 0 ) );
var_dump ( substr($str, -2, -3) );
$counter++;
}
/* variation of start and length to point to same element */
echo ("\n*** Testing for variations of start and length to point to same element ***\n");
var_dump (substr("abcde" , 2, -2) );
var_dump (substr("abcde" , -3, -2) );
/* Testing to return empty string when start denotes the position beyond the truncation (set by negative length) */
echo ("\n*** Testing for start > truncation ***\n");
var_dump (substr("abcdef" , 4, -4) );
/* String with null character */
echo ("\n*** Testing for string with null characters ***\n");
var_dump (substr("abc\x0xy\x0z" ,2) );
/* String with international characters */
echo ("\n*** Testing for string with international characters ***\n");
var_dump (substr('\xIñtërnâtiônàlizætiøn',3) );
/* start <0 && -start > length */
echo "\n*** Start before the first char ***\n";
var_dump (substr("abcd" , -8) );
echo"\nDone";
?>
--EXPECTF--
*** Testing for error conditions ***
2008-06-25 12:16:17 +00:00
Warning: substr() expects at least 2 parameters, 0 given in %s on line %d
NULL
2008-06-25 12:16:17 +00:00
Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
NULL
2008-06-25 12:16:17 +00:00
Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
NULL
2008-06-25 12:16:17 +00:00
Warning: substr() expects at least 2 parameters, 1 given in %s on line %d
NULL
2008-06-25 12:16:17 +00:00
Warning: substr() expects at most 3 parameters, 4 given in %s on line %d
NULL
--- Iteration 1 ---
-- Variations for two arguments --
bool(false)
bool(false)
bool(false)
-- Variations for three arguments --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
--- Iteration 2 ---
-- Variations for two arguments --
bool(false)
bool(false)
bool(false)
-- Variations for three arguments --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
--- Iteration 3 ---
-- Variations for two arguments --
string(4) "2345"
string(5) "12345"
string(2) "45"
-- Variations for three arguments --
string(3) "234"
string(0) ""
string(1) "2"
string(3) "123"
string(0) ""
string(2) "12"
string(2) "45"
string(0) ""
string(0) ""
--- Iteration 4 ---
-- Variations for two arguments --
string(5) "bcdef"
string(6) "abcdef"
string(2) "ef"
-- Variations for three arguments --
string(3) "bcd"
string(0) ""
string(2) "bc"
string(3) "abc"
string(0) ""
string(3) "abc"
string(2) "ef"
string(0) ""
string(0) ""
--- Iteration 5 ---
-- Variations for two arguments --
string(5) "23abc"
string(6) "123abc"
string(2) "bc"
-- Variations for three arguments --
string(3) "23a"
string(0) ""
string(2) "23"
string(3) "123"
string(0) ""
string(3) "123"
string(2) "bc"
string(0) ""
string(0) ""
--- Iteration 6 ---
-- Variations for two arguments --
string(6) "123abc"
string(7) "_123abc"
string(2) "bc"
-- Variations for three arguments --
string(3) "123"
string(0) ""
string(3) "123"
string(3) "_12"
string(0) ""
string(4) "_123"
string(2) "bc"
string(0) ""
string(0) ""
*** Testing for variations of start and length to point to same element ***
string(1) "c"
string(1) "c"
*** Testing for start > truncation ***
bool(false)
*** Testing for string with null characters ***
string(6) "cxyz"
*** Testing for string with international characters ***
string(26) "ñtërnâtiônàlizætiøn"
*** Start before the first char ***
string(4) "abcd"
Done