PageRenderTime 32ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/zend/bad/ext/standard/tests/strings/str_replace.php

http://github.com/facebook/hiphop-php
PHP | 234 lines | 175 code | 41 blank | 18 comment | 1 complexity | de671d3e6f587d546c9c8e9941d9b960 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?php
  2. /*
  3. Prototype: mixed str_replace(mixed $search, mixed $replace,
  4. mixed $subject [, int &$count]);
  5. Description: Replace all occurrences of the search string with
  6. the replacement string
  7. */
  8. echo "\n*** Testing str_replace() on basic operations ***\n";
  9. var_dump( str_replace("", "", "") );
  10. var_dump( str_replace("e", "b", "test") );
  11. var_dump( str_replace("", "", "", $count) );
  12. var_dump( $count );
  13. var_dump( str_replace("q", "q", "q", $count) );
  14. var_dump( $count );
  15. var_dump( str_replace("long string here", "", "", $count) );
  16. var_dump( $count );
  17. $fp = fopen( __FILE__, "r" );
  18. $fp_copy = $fp;
  19. var_dump( str_replace($fp_copy, $fp_copy, $fp_copy, $fp_copy) );
  20. var_dump( $fp_copy );
  21. fclose($fp);
  22. echo "\n*** Testing str_replace() with various search values ***";
  23. $search_arr = array( TRUE, FALSE, 1, 0, -1, "1", "0", "-1", NULL,
  24. array(), "php", "");
  25. $i = 0;
  26. /* loop through to replace the matched elements in the array */
  27. foreach( $search_arr as $value ) {
  28. echo "\n-- Iteration $i --\n";
  29. /* replace the string in array */
  30. var_dump( str_replace($value, "FOUND", $search_arr, $count) );
  31. var_dump( $count );
  32. $i++;
  33. }
  34. echo "\n*** Testing str_replace() with various subjects ***";
  35. $subject = "Hello, world,0120333.3445-1.234567 NULL TRUE FALSE\000
  36. \x000\xABCD\0abcd \xXYZ\tabcd $$@#%^&*!~,.:;?: !!Hello, World
  37. ?Hello, World chr(0).chr(128).chr(234).chr(65).chr(255).chr(256)";
  38. /* needles in an array to be compared in the string $string */
  39. $search_str = array (
  40. "Hello, World",
  41. 'Hello, World',
  42. '!!Hello, World',
  43. "??Hello, World",
  44. "$@#%^&*!~,.:;?",
  45. "123",
  46. 123,
  47. "-1.2345",
  48. -1.2344,
  49. "abcd",
  50. 'XYZ',
  51. NULL,
  52. "NULL",
  53. "0",
  54. 0,
  55. "",
  56. " ",
  57. "\0",
  58. "\x000",
  59. "\xABC",
  60. "\0000",
  61. ".3",
  62. TRUE,
  63. "TRUE",
  64. "1",
  65. 1,
  66. FALSE,
  67. "FALSE",
  68. " ",
  69. " ",
  70. 'b',
  71. '\t',
  72. "\t",
  73. chr(128).chr(234).chr(65).chr(255).chr(256),
  74. $subject
  75. );
  76. /* loop through to get the $string */
  77. for( $i = 0; $i < count($search_str); $i++ ) {
  78. echo "\n--- Iteration $i ---";
  79. echo "\n-- String after replacing the search value is => --\n";
  80. var_dump( str_replace($search_str[$i], "FOUND", $subject, $count) );
  81. echo "-- search string has found '$count' times\n";
  82. }
  83. echo "\n*** Testing Miscelleneous input data ***\n";
  84. /* If replace has fewer values than search, then an empty
  85. string is used for the rest of replacement values */
  86. var_dump( str_replace(array("a", "a", "b"),
  87. array("q", "q"),
  88. "aaabb", $count
  89. )
  90. );
  91. var_dump($count);
  92. var_dump( str_replace(array("a", "a", "b"),
  93. array("q", "q"),
  94. array("aaa", "bbb", "ccc"),
  95. $count
  96. )
  97. );
  98. var_dump($count);
  99. echo "\n-- Testing objects --\n";
  100. /* we get "Catchable fatal error: saying Object of class could not be converted
  101. to string" by default, when an object is passed instead of string:
  102. The error can be avoided by choosing the __toString magix method as follows: */
  103. class subject
  104. {
  105. function __toString() {
  106. return "Hello, world";
  107. }
  108. }
  109. $obj_subject = new subject;
  110. class search
  111. {
  112. function __toString() {
  113. return "Hello, world";
  114. }
  115. }
  116. $obj_search = new search;
  117. class replace
  118. {
  119. function __toString() {
  120. return "Hello, world";
  121. }
  122. }
  123. $obj_replace = new replace;
  124. var_dump(str_replace("$obj_search", "$obj_replace", "$obj_subject", $count));
  125. var_dump($count);
  126. echo "\n-- Testing arrays --\n";
  127. var_dump(str_replace(array("a", "a", "b"), "multi", "aaa", $count));
  128. var_dump($count);
  129. var_dump(str_replace( array("a", "a", "b"),
  130. array("q", "q", "c"),
  131. "aaa", $count
  132. )
  133. );
  134. var_dump($count);
  135. var_dump(str_replace( array("a", "a", "b"),
  136. array("q", "q", "c"),
  137. array("aaa", "bbb"),
  138. $count
  139. )
  140. );
  141. var_dump($count);
  142. var_dump(str_replace("a", array("q", "q", "c"), array("aaa", "bbb"), $count));
  143. var_dump($count);
  144. var_dump(str_replace("a", 1, array("aaa", "bbb"), $count));
  145. var_dump($count);
  146. var_dump(str_replace(1, 3, array("aaa1", "2bbb"), $count));
  147. var_dump($count);
  148. echo "\n-- Testing Resources --\n";
  149. $resource1 = fopen( __FILE__, "r" );
  150. $resource2 = opendir( "." );
  151. var_dump(str_replace("stream", "FOUND", $resource1, $count));
  152. var_dump($count);
  153. var_dump(str_replace("stream", "FOUND", $resource2, $count));
  154. var_dump($count);
  155. echo "\n-- Testing a longer and heredoc string --\n";
  156. $string = <<<EOD
  157. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  158. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  159. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  160. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  161. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  162. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  163. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  164. @#$%^&**&^%$#@!~:())))((((&&&**%$###@@@!!!~~~~@###$%^&*
  165. abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789
  166. EOD;
  167. var_dump( str_replace("abcdef", "FOUND", $string, $count) );
  168. var_dump( $count );
  169. echo "\n-- Testing a heredoc null string --\n";
  170. $str = <<<EOD
  171. EOD;
  172. var_dump( str_replace("", "FOUND", $str, $count) );
  173. var_dump( $count );
  174. echo "\n-- Testing simple and complex syntax strings --\n";
  175. $str = 'world';
  176. /* Simple syntax */
  177. var_dump( str_replace("world", "FOUND", "$str") );
  178. var_dump( str_replace("world'S", "FOUND", "$str'S") );
  179. var_dump( str_replace("worldS", "FOUND", "$strS") );
  180. /* String with curly braces, complex syntax */
  181. var_dump( str_replace("worldS", "FOUND", "${str}S") );
  182. var_dump( str_replace("worldS", "FOUND", "{$str}S") );
  183. echo "\n*** Testing error conditions ***";
  184. /* Invalid arguments */
  185. var_dump( str_replace() );
  186. var_dump( str_replace("") );
  187. var_dump( str_replace(NULL) );
  188. var_dump( str_replace(1, 2) );
  189. var_dump( str_replace(1,2,3,$var,5) );
  190. fclose($resource1);
  191. closedir($resource2);
  192. echo "Done\n";
  193. ?>