diff options
author | Raghubansh Kumar <kraghuba@php.net> | 2007-05-12 10:15:02 +0000 |
---|---|---|
committer | Raghubansh Kumar <kraghuba@php.net> | 2007-05-12 10:15:02 +0000 |
commit | 3a97c49489d5c86ae48c4c1eecd6f4cfa12ef176 (patch) | |
tree | 75c7520535a6e3aeceee3ff67b73518d00c5a424 | |
parent | 42ae6b508eb9e0d6f1b8ab7c429202833579ce3d (diff) | |
download | php-git-3a97c49489d5c86ae48c4c1eecd6f4cfa12ef176.tar.gz |
New version of addcslashes.phpt, md5_file.phpt, str_replace.phpt, substr.phpt, chr_ord.phpt, strpos.phpt, strstr.phpt, trim1.phpt, implode1.phpt, str_repeat.phpt, substr_count.phpt
-rw-r--r-- | ext/standard/tests/strings/addcslashes.phpt | bin | 0 -> 4107 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/chr_ord.phpt | bin | 191 -> 3181 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/implode1.phpt | bin | 707 -> 6274 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/md5_file.phpt | bin | 0 -> 3030 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/str_repeat.phpt | bin | 332 -> 10801 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/str_replace.phpt | 902 | ||||
-rw-r--r-- | ext/standard/tests/strings/strpos.phpt | bin | 612 -> 9380 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/strstr.phpt | bin | 764 -> 10390 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/substr.phpt | bin | 0 -> 4536 bytes | |||
-rw-r--r-- | ext/standard/tests/strings/substr_count.phpt | 158 | ||||
-rw-r--r-- | ext/standard/tests/strings/trim1.phpt | bin | 0 -> 2010 bytes |
11 files changed, 1020 insertions, 40 deletions
diff --git a/ext/standard/tests/strings/addcslashes.phpt b/ext/standard/tests/strings/addcslashes.phpt Binary files differnew file mode 100644 index 0000000000..aa6821c076 --- /dev/null +++ b/ext/standard/tests/strings/addcslashes.phpt diff --git a/ext/standard/tests/strings/chr_ord.phpt b/ext/standard/tests/strings/chr_ord.phpt Binary files differindex 56cfef70a3..8c91b4cba0 100644 --- a/ext/standard/tests/strings/chr_ord.phpt +++ b/ext/standard/tests/strings/chr_ord.phpt diff --git a/ext/standard/tests/strings/implode1.phpt b/ext/standard/tests/strings/implode1.phpt Binary files differindex 1582c25168..b2cbb79e25 100644 --- a/ext/standard/tests/strings/implode1.phpt +++ b/ext/standard/tests/strings/implode1.phpt diff --git a/ext/standard/tests/strings/md5_file.phpt b/ext/standard/tests/strings/md5_file.phpt Binary files differnew file mode 100644 index 0000000000..c10d62044f --- /dev/null +++ b/ext/standard/tests/strings/md5_file.phpt diff --git a/ext/standard/tests/strings/str_repeat.phpt b/ext/standard/tests/strings/str_repeat.phpt Binary files differindex f91bd31b67..4ad901a61e 100644 --- a/ext/standard/tests/strings/str_repeat.phpt +++ b/ext/standard/tests/strings/str_repeat.phpt diff --git a/ext/standard/tests/strings/str_replace.phpt b/ext/standard/tests/strings/str_replace.phpt index 46d732a698..fe05d06c43 100644 --- a/ext/standard/tests/strings/str_replace.phpt +++ b/ext/standard/tests/strings/str_replace.phpt @@ -1,40 +1,168 @@ --TEST-- -str_replace() tests +Test str_replace() function --FILE-- <?php +/* + Prototype: mixed str_replace(mixed $search, mixed $replace, + mixed $subject [, int &$count]); + Description: Replace all occurrences of the search string with + the replacement string +*/ -var_dump(str_replace("", "", "")); +echo "\n*** Testing str_replace() on basic operations ***\n"; -var_dump(str_replace("e", "b", "test")); +var_dump( str_replace("", "", "") ); -var_dump(str_replace("", "", "", $count)); -var_dump($count); +var_dump( str_replace("e", "b", "test") ); -var_dump(str_replace("q", "q", "q", $count)); -var_dump($count); +var_dump( str_replace("", "", "", $count) ); +var_dump( $count ); -var_dump(str_replace("long string here", "", "", $count)); -var_dump($count); +var_dump( str_replace("q", "q", "q", $count) ); +var_dump( $count ); -var_dump(str_replace(chr(0), "a", "", $count)); -var_dump($count); +var_dump( str_replace("long string here", "", "", $count) ); +var_dump( $count ); -var_dump(str_replace(chr(0), "a", chr(0), $count)); -var_dump($count); +$fp = fopen( __FILE__, "r" ); +var_dump( str_replace($fp, $fp, $fp, $fp) ); +var_dump( $fp ); + +echo "\n*** Testing str_replace() with various search values ***"; +$search_arr = array( TRUE, FALSE, 1, 0, -1, "1", "0", "-1", NULL, + array(), "php", ""); + +$i = 0; +/* loop through to replace the matched elements in the array */ +foreach( $search_arr as $value ) { + echo "\n-- Iteration $i --\n"; + /* replace the string in array */ + var_dump( str_replace($value, "FOUND", $search_arr, $count) ); + var_dump( $count ); + $i++; +} + +echo "\n*** Testing str_replace() with various subjects ***"; +$subject = "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE\000 + \x000\xABCD\0abcd \xXYZ\tabcd $$@#%^&*!~,.:;?: !!Hello, World + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)"; + +/* needles in an array to be compared in the string $string */ +$search_str = array ( + "Hello, World", + 'Hello, World', + '!!Hello, World', + "??Hello, World", + "$@#%^&*!~,.:;?", + "123", + 123, + "-1.2345", + -1.2344, + "abcd", + 'XYZ', + NULL, + "NULL", + "0", + 0, + "", + " ", + "\0", + "\x000", + "\xABC", + "\0000", + ".3", + TRUE, + "TRUE", + "1", + 1, + FALSE, + "FALSE", + " ", + " ", + 'b', + '\t', + "\t", + chr(128).chr(234).chr(65).chr(255).chr(256), + $subject +); -var_dump(str_replace("multi", "a", "aaa", $count)); +/* loop through to get the $string */ +for( $i = 0; $i < count($search_str); $i++ ) { + echo "\n--- Iteration $i ---"; + echo "\n-- String after replacing the search value is => --\n"; + var_dump( str_replace($search_str[$i], "FOUND", $subject, $count) ); + echo "-- search string has found '$count' times\n"; +} + + +echo "\n*** Testing Miscelleneous input data ***\n"; +/* If replace has fewer values than search, then an empty + string is used for the rest of replacement values */ +var_dump( str_replace(array("a", "a", "b"), + array("q", "q"), + "aaabb", $count + ) + ); +var_dump($count); +var_dump( str_replace(array("a", "a", "b"), + array("q", "q"), + array("aaa", "bbb", "ccc"), + $count + ) + ); var_dump($count); -var_dump(str_replace("a", "multi", "aaa", $count)); + +echo "\n-- Testing objects --\n"; +/* we get "Catchable fatal error: saying Object of class could not be converted + to string" by default, when an object is passed instead of string: +The error can be avoided by chosing the __toString magix method as follows: */ + +class subject +{ + function __toString() { + return "Hello, world"; + } +} +$obj_subject = new subject; + +class search +{ + function __toString() { + return "Hello, world"; + } +} +$obj_search = new search; + +class replace +{ + function __toString() { + return "Hello, world"; + } +} +$obj_replace = new replace; + +var_dump(str_replace("$obj_search", "$obj_replace", "$obj_subject", $count)); var_dump($count); + +echo "\n-- Testing arrays --\n"; var_dump(str_replace(array("a", "a", "b"), "multi", "aaa", $count)); var_dump($count); -var_dump(str_replace(array("a", "a", "b"), array("q", "q", "c"), "aaa", $count)); +var_dump(str_replace( array("a", "a", "b"), + array("q", "q", "c"), + "aaa", $count + ) +); var_dump($count); -var_dump(str_replace(array("a", "a", "b"), array("q", "q", "c"), array("aaa", "bbb"), $count)); +var_dump(str_replace( array("a", "a", "b"), + array("q", "q", "c"), + array("aaa", "bbb"), + $count + ) +); var_dump($count); var_dump(str_replace("a", array("q", "q", "c"), array("aaa", "bbb"), $count)); @@ -46,13 +174,70 @@ var_dump($count); var_dump(str_replace(1, 3, array("aaa1", "2bbb"), $count)); var_dump($count); -$fp = fopen(__FILE__, "r"); -var_dump(str_replace($fp, $fp, $fp, $fp)); -var_dump($fp); + +echo "\n-- Testing Resources --\n"; +$resource1 = fopen( __FILE__, "r" ); +$resource2 = opendir( "." ); +var_dump(str_replace("stream", "FOUND", $resource1, $count)); +var_dump($count); +var_dump(str_replace("stream", "FOUND", $resource2, $count)); +var_dump($count); + + +echo "\n-- Testing a longer and heredoc string --\n"; +$string = <<<EOD +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +@#$%^&**&^%$#@!~:())))((((&&&**%$###@@@!!!~~~~@###$%^&* +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +EOD; + +var_dump( str_replace("abcdef", "FOUND", $string, $count) ); +var_dump( $count ); + +echo "\n-- Testing a heredoc null string --\n"; +$str = <<<EOD +EOD; +var_dump( str_replace("", "FOUND", $str, $count) ); +var_dump( $count ); + + +echo "\n-- Testing simple and complex syntax strings --\n"; +$str = 'world'; + +/* Simple syntax */ +var_dump( str_replace("world", "FOUND", "$str") ); +var_dump( str_replace("world'S", "FOUND", "$str'S") ); +var_dump( str_replace("worldS", "FOUND", "$strS") ); + +/* String with curly braces, complex syntax */ +var_dump( str_replace("worldS", "FOUND", "${str}S") ); +var_dump( str_replace("worldS", "FOUND", "{$str}S") ); + + +echo "\n*** Testing error conditions ***"; +/* Invalid arguments */ +var_dump( str_replace() ); +var_dump( str_replace("") ); +var_dump( str_replace(NULL) ); +var_dump( str_replace(1, 2) ); +var_dump( str_replace(1,2,3,$var,5) ); echo "Done\n"; + +--CLEAN-- +fclose($fp); +fclose($resource1); +closedir($resource2); + ?> --EXPECTF-- +*** Testing str_replace() on basic operations *** string(0) "" string(4) "tbst" string(0) "" @@ -61,14 +246,632 @@ string(1) "q" int(1) string(0) "" int(0) -string(0) "" +string(14) "Resource id #5" +int(1) + +*** Testing str_replace() with various search values *** +-- Iteration 0 -- +array(12) { + [0]=> + string(5) "FOUND" + [1]=> + string(0) "" + [2]=> + string(5) "FOUND" + [3]=> + string(1) "0" + [4]=> + string(6) "-FOUND" + [5]=> + string(5) "FOUND" + [6]=> + string(1) "0" + [7]=> + string(6) "-FOUND" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(5) + +-- Iteration 1 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(0) + +-- Iteration 2 -- +array(12) { + [0]=> + string(5) "FOUND" + [1]=> + string(0) "" + [2]=> + string(5) "FOUND" + [3]=> + string(1) "0" + [4]=> + string(6) "-FOUND" + [5]=> + string(5) "FOUND" + [6]=> + string(1) "0" + [7]=> + string(6) "-FOUND" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(5) + +-- Iteration 3 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(5) "FOUND" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(5) "FOUND" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(2) + +-- Iteration 4 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(5) "FOUND" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(5) "FOUND" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(2) + +-- Iteration 5 -- +array(12) { + [0]=> + string(5) "FOUND" + [1]=> + string(0) "" + [2]=> + string(5) "FOUND" + [3]=> + string(1) "0" + [4]=> + string(6) "-FOUND" + [5]=> + string(5) "FOUND" + [6]=> + string(1) "0" + [7]=> + string(6) "-FOUND" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(5) + +-- Iteration 6 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(5) "FOUND" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(5) "FOUND" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(2) + +-- Iteration 7 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(5) "FOUND" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(5) "FOUND" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(2) + +-- Iteration 8 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} int(0) -string(1) "a" + +-- Iteration 9 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} +int(0) + +-- Iteration 10 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(5) "FOUND" + [11]=> + string(0) "" +} int(1) -string(3) "aaa" + +-- Iteration 11 -- +array(12) { + [0]=> + string(1) "1" + [1]=> + string(0) "" + [2]=> + string(1) "1" + [3]=> + string(1) "0" + [4]=> + string(2) "-1" + [5]=> + string(1) "1" + [6]=> + string(1) "0" + [7]=> + string(2) "-1" + [8]=> + string(0) "" + [9]=> + array(0) { + } + [10]=> + string(3) "php" + [11]=> + string(0) "" +} int(0) -string(15) "multimultimulti" -int(3) + +*** Testing str_replace() with various subjects *** +--- Iteration 0 --- +-- String after replacing the search value is => -- +string(177) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?FOUND chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '2' times + +--- Iteration 1 --- +-- String after replacing the search value is => -- +string(177) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?FOUND chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '2' times + +--- Iteration 2 --- +-- String after replacing the search value is => -- +string(182) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 3 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 4 --- +-- String after replacing the search value is => -- +string(182) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 5 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 6 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 7 --- +-- String after replacing the search value is => -- +string(189) "Hello, world,0120333.3445FOUND67 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 8 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 9 --- +-- String after replacing the search value is => -- +string(193) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '2' times + +--- Iteration 10 --- +-- String after replacing the search value is => -- +string(193) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 11 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 12 --- +-- String after replacing the search value is => -- +string(192) "Hello, world,0120333.3445-1.234567 FOUND TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 13 --- +-- String after replacing the search value is => -- +string(207) "Hello, world,FOUND12FOUND333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(FOUND).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '4' times + +--- Iteration 14 --- +-- String after replacing the search value is => -- +string(207) "Hello, world,FOUND12FOUND333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(FOUND).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '4' times + +--- Iteration 15 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 16 --- +-- String after replacing the search value is => -- +string(307) "Hello,FOUNDworld,0120333.3445-1.234567FOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDNULLFOUNDTRUEFOUNDFALSE +FOUND FOUNDFOUNDFOUNDFOUND + FOUNDFOUNDFOUNDFOUND?Hello,FOUNDWorldFOUNDchr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '29' times + +--- Iteration 17 --- +-- String after replacing the search value is => -- +string(203) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSEFOUND + FOUND0«CDFOUNDabcd \xXYZ abcd $$@#%^&*!~,.:;?: !!Hello, World + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '3' times + +--- Iteration 18 --- +-- String after replacing the search value is => -- +string(194) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + FOUND«CD + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 19 --- +-- String after replacing the search value is => -- +string(194) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 20 --- +-- String after replacing the search value is => -- +string(194) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + FOUND«CD + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 21 --- +-- String after replacing the search value is => -- +string(194) "Hello, world,0120333FOUND445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 22 --- +-- String after replacing the search value is => -- +string(203) "Hello, world,0FOUND20333.3445-FOUND.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(FOUND28).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '3' times + +--- Iteration 23 --- +-- String after replacing the search value is => -- +string(192) "Hello, world,0120333.3445-1.234567 NULL FOUND FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 24 --- +-- String after replacing the search value is => -- +string(203) "Hello, world,0FOUND20333.3445-FOUND.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(FOUND28).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '3' times + +--- Iteration 25 --- +-- String after replacing the search value is => -- +string(203) "Hello, world,0FOUND20333.3445-FOUND.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(FOUND28).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '3' times + +--- Iteration 26 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 27 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FOUND + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 28 --- +-- String after replacing the search value is => -- +string(307) "Hello,FOUNDworld,0120333.3445-1.234567FOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDFOUNDNULLFOUNDTRUEFOUNDFALSE +FOUND FOUNDFOUNDFOUNDFOUND + FOUNDFOUNDFOUNDFOUND?Hello,FOUNDWorldFOUNDchr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '29' times + +--- Iteration 29 --- +-- String after replacing the search value is => -- +string(186) "Hello, world,0120333.3445-1.234567FOUNDNULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '1' times + +--- Iteration 30 --- +-- String after replacing the search value is => -- +string(199) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '2' times + +--- Iteration 31 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 32 --- +-- String after replacing the search value is => -- +string(203) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + FOUND +FOUND ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '3' times + +--- Iteration 33 --- +-- String after replacing the search value is => -- +string(191) "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE + + ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)" +-- search string has found '0' times + +--- Iteration 34 --- +-- String after replacing the search value is => -- +string(5) "FOUND" +-- search string has found '1' times + +*** Testing Miscelleneous input data *** +string(3) "qqq" +int(5) +array(3) { + [0]=> + string(3) "qqq" + [1]=> + string(0) "" + [2]=> + string(3) "ccc" +} +int(6) + +-- Testing objects -- +string(12) "Hello, world" +int(1) + +-- Testing arrays -- string(15) "multimultimulti" int(3) string(3) "qqq" @@ -103,6 +906,51 @@ array(2) { string(4) "2bbb" } int(1) -string(%d) "Resource id #%d" -int(1) + +-- Testing Resources -- +string(14) "Resource id #6" +int(0) +string(14) "Resource id #7" +int(0) + +-- Testing a longer and heredoc string -- +string(623) "FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789 +@#$%^&**&^%$#@!~:())))((((&&&**%$###@@@!!!~~~~@###$%^&* +FOUNDghijklmnopqrstuvwxyz0123456789FOUNDghijklmnopqrstuvwxyz0123456789" +int(16) + +-- Testing a heredoc null string -- +string(0) "" +int(0) + +-- Testing simple and complex syntax strings -- +string(5) "FOUND" +string(5) "FOUND" + +Notice: Undefined variable: strS in %s on line %d +string(0) "" +string(5) "FOUND" +string(5) "FOUND" + +*** Testing error conditions *** +Warning: Wrong parameter count for str_replace() in %s on line %d +NULL + +Warning: Wrong parameter count for str_replace() in %s on line %d +NULL + +Warning: Wrong parameter count for str_replace() in %s on line %d +NULL + +Warning: Wrong parameter count for str_replace() in %s on line %d +NULL + +Warning: Wrong parameter count for str_replace() in %s on line %d +NULL Done diff --git a/ext/standard/tests/strings/strpos.phpt b/ext/standard/tests/strings/strpos.phpt Binary files differindex 4d30e98229..ecdbdcdf9c 100644 --- a/ext/standard/tests/strings/strpos.phpt +++ b/ext/standard/tests/strings/strpos.phpt diff --git a/ext/standard/tests/strings/strstr.phpt b/ext/standard/tests/strings/strstr.phpt Binary files differindex 10ed33ddc7..fc00ea098a 100644 --- a/ext/standard/tests/strings/strstr.phpt +++ b/ext/standard/tests/strings/strstr.phpt diff --git a/ext/standard/tests/strings/substr.phpt b/ext/standard/tests/strings/substr.phpt Binary files differnew file mode 100644 index 0000000000..b43244e4c8 --- /dev/null +++ b/ext/standard/tests/strings/substr.phpt diff --git a/ext/standard/tests/strings/substr_count.phpt b/ext/standard/tests/strings/substr_count.phpt index 6aee365340..f15f425081 100644 --- a/ext/standard/tests/strings/substr_count.phpt +++ b/ext/standard/tests/strings/substr_count.phpt @@ -1,23 +1,99 @@ --TEST-- -substr_count() function +Test substr_count() function --FILE-- <?php - var_dump(@substr_count("", "")); - var_dump(@substr_count("a", "")); - var_dump(@substr_count("", "a")); - var_dump(@substr_count("", "a")); - var_dump(@substr_count("", chr(0))); +/* Prototype: int substr_count ( string $haystack, string $needle [, int $offset [, int $length]] ); + * Description: substr_count() returns the number of times the needle substring occurs in the + * haystack string. Please note that needle is case sensitive + */ + +/* Count the number of substring occurrences */ +echo "***Testing basic operations ***\n"; +var_dump(@substr_count("", "")); +var_dump(@substr_count("a", "")); +var_dump(@substr_count("", "a")); +var_dump(@substr_count("", "a")); +var_dump(@substr_count("", chr(0))); +$a = str_repeat("abcacba", 100); +var_dump(@substr_count($a, "bca")); +$a = str_repeat("abcacbabca", 100); +var_dump(@substr_count($a, "bca")); +var_dump(substr_count($a, "bca", 200)); +var_dump(substr_count($a, "bca", 200, 50)); + +echo "\n*** Testing possible variations ***\n"; +echo "-- 3rd or 4th arg as string --\n"; +$str = "this is a string"; +var_dump( substr_count($str, "t", "5") ); +var_dump( substr_count($str, "t", "5", "10") ); +var_dump( substr_count($str, "i", "5t") ); +var_dump( substr_count($str, "i", "5t", "10t") ); + +echo "\n-- 3rd or 4th arg as NULL --\n"; +var_dump( substr_count($str, "t", "") ); +var_dump( substr_count($str, "T", "") ); +var_dump( substr_count($str, "t", "", 15) ); +var_dump( substr_count($str, "I", NULL) ); +var_dump( substr_count($str, "i", NULL, 10) ); + +echo "\n-- overlapped substrings --\n"; +var_dump( substr_count("abcabcabcabcabc", "abca") ); +var_dump( substr_count("abcabcabcabcabc", "abca", 2) ); + +echo "\n-- complex strings containing other than 7-bit chars --\n"; +$str = chr(128).chr(129).chr(128).chr(256).chr(255).chr(254).chr(255); +var_dump(substr_count($str, chr(128))); +var_dump(substr_count($str, chr(255))); +var_dump(substr_count($str, chr(256))); + +echo "\n-- heredoc string --\n"; +$string = <<<EOD +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +acdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +acdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789 +EOD; +var_dump(substr_count($string, "abcd")); +var_dump(substr_count($string, "1234")); + +echo "\n-- heredoc null string --\n"; +$str = <<<EOD +EOD; +var_dump(substr_count($str, "\0")); +var_dump(substr_count($str, "\x000")); +var_dump(substr_count($str, "0")); + + +echo "\n*** Testing error conditions ***\n"; +/* Zero argument */ +var_dump( substr_count() ); + +/* more than expected no. of args */ +var_dump( substr_count($str, "t", 0, 15, 30) ); - $a = str_repeat("abcacba", 100); - var_dump(@substr_count($a, "bca")); +/* offset as negative value */ +var_dump(substr_count($str, "t", -5)); + +/* offset > size of the string */ +var_dump(substr_count($str, "t", 25)); + +/* Using offset and length to go beyond the size of the string: + Warning message expected, as length+offset > length of string */ +var_dump( substr_count($str, "i", 5, 15) ); + +/* length as Null */ +var_dump( substr_count($str, "t", "", "") ); +var_dump( substr_count($str, "i", NULL, NULL) ); - $a = str_repeat("abcacbabca", 100); - var_dump(@substr_count($a, "bca")); +echo "Done\n"; - var_dump(substr_count($a, "bca", 200)); - var_dump(substr_count($a, "bca", 200, 50)); ?> ---EXPECT-- +--EXPECTF-- +***Testing basic operations *** bool(false) bool(false) int(0) @@ -27,3 +103,59 @@ int(100) int(200) int(160) int(10) + +*** Testing possible variations *** +-- 3rd or 4th arg as string -- +int(1) +int(1) +int(2) +int(2) + +-- 3rd or 4th arg as NULL -- +int(2) +int(0) +int(2) +int(0) +int(2) + +-- overlapped substrings -- +int(2) +int(2) + +-- complex strings containing other than 7-bit chars -- +int(2) +int(2) +int(1) + +-- heredoc string -- +int(14) +int(16) + +-- heredoc null string -- +int(0) +int(0) +int(0) + +*** Testing error conditions *** + +Warning: Wrong parameter count for substr_count() in %s on line %d +NULL + +Warning: Wrong parameter count for substr_count() in %s on line %d +NULL + +Warning: substr_count(): Offset should be greater than or equal to 0. in %s on line %d +bool(false) + +Warning: substr_count(): Offset value 25 exceeds string length. in %s on line %d +bool(false) + +Warning: substr_count(): Offset value 5 exceeds string length. in %s on line %d +bool(false) + +Warning: substr_count(): Length should be greater than 0. in %s on line %d +bool(false) + +Warning: substr_count(): Length should be greater than 0. in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/strings/trim1.phpt b/ext/standard/tests/strings/trim1.phpt Binary files differnew file mode 100644 index 0000000000..4d89d0cf33 --- /dev/null +++ b/ext/standard/tests/strings/trim1.phpt |