123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- --TEST--
- Test strstr() function
- --FILE--
- <?php
- echo "*** Testing basic functionality of strstr() ***\n";
- var_dump( strstr("test string", "test") );
- var_dump( strstr("test string", "string") );
- var_dump( strstr("test string", "strin") );
- var_dump( strstr("test string", "t s") );
- var_dump( strstr("test string", "g") );
- var_dump( md5(strstr("te".chr(0)."st", chr(0))) );
- var_dump( strstr("tEst", "test") );
- var_dump( strstr("teSt", "test") );
- var_dump( strstr("", "") );
- var_dump( strstr("a", "") );
- var_dump( strstr("", "a") );
- echo "\n*** Testing strstr() with various needles ***";
- $string =
- "Hello world,012033 -3.3445 NULL TRUE FALSE\0 abcd\xxyz \x000 octal\n
- abcd$:Hello world";
- /* needles in an array to get the string starts with needle, in $string */
- $needles = array(
- "Hello world",
- "WORLD",
- "\0",
- "\x00",
- "\x000",
- "abcd",
- "xyz",
- "octal",
- "-3",
- -3,
- "-3.344",
- -3.344,
- "NULL",
- "0",
- 0,
- TRUE,
- "TRUE",
- "1",
- 1,
- FALSE,
- "FALSE",
- " ",
- " ",
- 'b',
- '\n',
- "\n",
- "12",
- "12twelve",
- $string
- );
- /* loop through to get the string starts with "needle" in $string */
- for( $i = 0; $i < count($needles); $i++ ) {
- echo "\n-- Iteration $i --\n";
- var_dump( strstr($string, $needles[$i]) );
- }
- echo "\n*** Testing miscellaneous input data ***\n";
- echo "-- Passing objects as string and needle --\n";
- /* we get "Recoverable fatal error: saying Object of class needle could not be
- converted to string" by default when an object is passed instead of string:
- The error can be avoided by choosing the __toString magix method as follows: */
- class StringCapable
- {
- function __toString() {
- return "Hello, world";
- }
- }
- $obj_string = new StringCapable;
- class needle
- {
- function __toString() {
- return "world";
- }
- }
- $obj_needle = new needle;
- var_dump(strstr("$obj_string", "$obj_needle"));
- echo "\n-- Posiibilities with null --\n";
- var_dump( strstr("", NULL) );
- var_dump( strstr(NULL, NULL) );
- var_dump( strstr("a", NULL) );
- var_dump( strstr("/x0", "0") ); // Hexadecimal NUL
- echo "\n-- A longer and heredoc string --\n";
- $string = <<<EOD
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- EOD;
- var_dump( strstr($string, "abcd") );
- var_dump( strstr($string, "1234") );
- echo "\n-- A heredoc null string --\n";
- $str = <<<EOD
- EOD;
- var_dump( strstr($str, "\0") );
- var_dump( strstr($str, "0") );
- echo "\n-- simple and complex syntax strings --\n";
- $needle = 'world';
- /* Simple syntax */
- var_dump( strstr("Hello, world", "$needle") ); // works
- var_dump( strstr("Hello, world'S", "$needle'S") ); // works
- var_dump( strstr("Hello, worldS", "$needleS") ); // won't work
- /* String with curly braces, complex syntax */
- var_dump( strstr("Hello, worldS", "${needle}S") ); // works
- var_dump( strstr("Hello, worldS", "{$needle}S") ); // works
- echo "\n*** Testing error conditions ***";
- var_dump( strstr($string, ""));
- var_dump( strstr("a", "b", "c") ); // args > expected
- ?>
- DONE
- --EXPECTF--
- *** Testing basic functionality of strstr() ***
- string(11) "test string"
- string(6) "string"
- string(6) "string"
- string(8) "t string"
- string(1) "g"
- string(32) "7272696018bdeb2c9a3f8d01fc2a9273"
- bool(false)
- bool(false)
- string(0) ""
- string(1) "a"
- bool(false)
- *** Testing strstr() with various needles ***
- -- Iteration 0 --
- string(85) "Hello world,012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 1 --
- bool(false)
- -- Iteration 2 --
- string(39) "%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 3 --
- string(39) "%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 4 --
- string(27) "%00 octal
- abcd$:Hello world"
- -- Iteration 5 --
- string(37) "abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 6 --
- string(31) "xyz %00 octal
- abcd$:Hello world"
- -- Iteration 7 --
- string(24) "octal
- abcd$:Hello world"
- -- Iteration 8 --
- string(66) "-3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 9 --
- string(66) "-3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 10 --
- string(66) "-3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 11 --
- string(66) "-3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 12 --
- string(54) "NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 13 --
- string(73) "012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 14 --
- string(73) "012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 15 --
- string(72) "12033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 16 --
- string(49) "TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 17 --
- string(72) "12033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 18 --
- string(72) "12033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 19 --
- string(85) "Hello world,012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 20 --
- string(44) "FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 21 --
- string(80) " world,012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 22 --
- string(59) " NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 23 --
- string(36) "bcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 24 --
- bool(false)
- -- Iteration 25 --
- string(19) "
- abcd$:Hello world"
- -- Iteration 26 --
- string(72) "12033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- -- Iteration 27 --
- bool(false)
- -- Iteration 28 --
- string(85) "Hello world,012033 -3.3445 NULL TRUE FALSE%0 abcd\xxyz %00 octal
- abcd$:Hello world"
- *** Testing miscellaneous input data ***
- -- Passing objects as string and needle --
- string(5) "world"
- -- Posiibilities with null --
- Deprecated: strstr(): Passing null to parameter #2 ($needle) of type string is deprecated in %s on line %d
- string(0) ""
- Deprecated: strstr(): Passing null to parameter #1 ($haystack) of type string is deprecated in %s on line %d
- Deprecated: strstr(): Passing null to parameter #2 ($needle) of type string is deprecated in %s on line %d
- string(0) ""
- Deprecated: strstr(): Passing null to parameter #2 ($needle) of type string is deprecated in %s on line %d
- string(1) "a"
- string(1) "0"
- -- A longer and heredoc string --
- string(729) "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789"
- string(702) "123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789"
- -- A heredoc null string --
- bool(false)
- bool(false)
- -- simple and complex syntax strings --
- string(5) "world"
- string(7) "world'S"
- Warning: Undefined variable $needleS in %s on line %d
- string(13) "Hello, worldS"
- string(6) "worldS"
- string(6) "worldS"
- *** Testing error conditions ***string(729) "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
- abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789"
- bool(false)
- DONE
|