mb_convert_encoding_array2.phpt 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. --TEST--
  2. Test mb_convert_encoding() function : Circular references
  3. --SKIPIF--
  4. <?php
  5. extension_loaded('mbstring') or die('skip');
  6. function_exists('mb_convert_encoding') or die("skip mb_convert_encoding() is not available in this build");
  7. ?>
  8. --FILE--
  9. <?php
  10. /* Prototype : string mb_convert_encoding(string $str, string $to_encoding [, mixed $from_encoding])
  11. * Description: Returns converted string in desired encoding
  12. * Source code: ext/mbstring/mbstring.c
  13. */
  14. /*
  15. * Test basic functionality of mb_convert_encoding()
  16. */
  17. echo "*** Testing mb_convert_encoding() : Circular references ***\n";
  18. //All strings are the same when displayed in their respective encodings
  19. $sjis_string[] = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==');
  20. $sjis_string[] = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==');
  21. $tmp = &$sjis_string;
  22. $sjis_string[] = $tmp;
  23. $jis_string[] = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==');
  24. $jis_string[] = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==');
  25. $tmp = &$jis_string;
  26. $jis_string[] = $tmp;
  27. $euc_jp_string[] = base64_decode('xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow==');
  28. $euc_jp_string[] = base64_decode('xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow==');
  29. $tmp = &$euc_jp_string;
  30. $euc_jp_string[] = $tmp;
  31. $utf8_string[] = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
  32. $utf8_string[] = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
  33. $tmp = &$utf8_string;
  34. $utf8_string[] = $tmp;
  35. function base64_encode_array($input) {
  36. foreach ($input as $var) {
  37. if (is_scalar($var))
  38. $ret[] = base64_encode($var);
  39. }
  40. return $ret;
  41. }
  42. echo "\n-- Convert to JIS --\n";
  43. echo "JIS encoded string in base64:\n";
  44. var_dump(base64_encode_array($jis_string));
  45. echo "Converted Strings:\n";
  46. var_dump(base64_encode_array(mb_convert_encoding($sjis_string, 'JIS', 'SJIS')));
  47. var_dump(base64_encode_array(mb_convert_encoding($euc_jp_string, 'JIS', 'EUC-JP')));
  48. var_dump(base64_encode_array(mb_convert_encoding($utf8_string, 'JIS', 'UTF-8')));
  49. echo "\n-- Convert to EUC-JP --\n";
  50. echo "EUC-JP encoded string in base64:\n";
  51. var_dump(base64_encode_array($euc_jp_string));
  52. echo "Converted Strings:\n";
  53. var_dump(base64_encode_array(mb_convert_encoding($sjis_string, 'EUC-JP', 'SJIS')));
  54. var_dump(base64_encode_array(mb_convert_encoding($jis_string, 'EUC-JP', 'JIS')));
  55. var_dump(base64_encode_array(mb_convert_encoding($utf8_string, 'EUC-JP', 'UTF-8')));
  56. echo "\n-- Convert to SJIS --\n";
  57. echo "SJIS encoded string in base64:\n";
  58. var_dump(base64_encode_array($sjis_string));
  59. echo "Converted Strings:\n";
  60. var_dump(base64_encode_array(mb_convert_encoding($jis_string, 'SJIS', 'JIS')));
  61. var_dump(base64_encode_array(mb_convert_encoding($euc_jp_string, 'SJIS', 'EUC-JP')));
  62. var_dump(base64_encode_array(mb_convert_encoding($utf8_string, 'SJIS', 'UTF-8')));
  63. echo "\n-- Convert to UTF-8 --\n";
  64. echo "UTF-8 encoded string in base64:\n";
  65. var_dump(base64_encode_array($utf8_string));
  66. echo "Converted Strings:\n";
  67. var_dump(base64_encode_array(mb_convert_encoding($sjis_string, 'UTF-8', 'SJIS')));
  68. var_dump(base64_encode_array(mb_convert_encoding($jis_string, 'UTF-8', 'JIS')));
  69. var_dump(base64_encode_array(mb_convert_encoding($euc_jp_string, 'UTF-8', 'EUC-JP')));
  70. echo "Done";
  71. ?>
  72. --EXPECTF--
  73. *** Testing mb_convert_encoding() : Circular references ***
  74. -- Convert to JIS --
  75. JIS encoded string in base64:
  76. array(2) {
  77. [0]=>
  78. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  79. [1]=>
  80. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  81. }
  82. Converted Strings:
  83. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  84. array(2) {
  85. [0]=>
  86. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  87. [1]=>
  88. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  89. }
  90. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  91. array(2) {
  92. [0]=>
  93. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  94. [1]=>
  95. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  96. }
  97. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  98. array(2) {
  99. [0]=>
  100. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  101. [1]=>
  102. string(68) "GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=="
  103. }
  104. -- Convert to EUC-JP --
  105. EUC-JP encoded string in base64:
  106. array(2) {
  107. [0]=>
  108. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  109. [1]=>
  110. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  111. }
  112. Converted Strings:
  113. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  114. array(2) {
  115. [0]=>
  116. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  117. [1]=>
  118. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  119. }
  120. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  121. array(2) {
  122. [0]=>
  123. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  124. [1]=>
  125. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  126. }
  127. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  128. array(2) {
  129. [0]=>
  130. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  131. [1]=>
  132. string(52) "xvzL3LjspcalraW5pcikx6S5oaMwMTIzNKO1o7ajt6O4o7mhow=="
  133. }
  134. -- Convert to SJIS --
  135. SJIS encoded string in base64:
  136. array(2) {
  137. [0]=>
  138. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  139. [1]=>
  140. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  141. }
  142. Converted Strings:
  143. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  144. array(2) {
  145. [0]=>
  146. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  147. [1]=>
  148. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  149. }
  150. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  151. array(2) {
  152. [0]=>
  153. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  154. [1]=>
  155. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  156. }
  157. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  158. array(2) {
  159. [0]=>
  160. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  161. [1]=>
  162. string(52) "k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=="
  163. }
  164. -- Convert to UTF-8 --
  165. UTF-8 encoded string in base64:
  166. array(2) {
  167. [0]=>
  168. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  169. [1]=>
  170. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  171. }
  172. Converted Strings:
  173. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  174. array(2) {
  175. [0]=>
  176. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  177. [1]=>
  178. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  179. }
  180. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  181. array(2) {
  182. [0]=>
  183. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  184. [1]=>
  185. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  186. }
  187. Warning: mb_convert_encoding(): Cannot convert recursively referenced values in %s on line %d
  188. array(2) {
  189. [0]=>
  190. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  191. [1]=>
  192. string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  193. }
  194. Done