htmlentities21.phpt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. --TEST--
  2. htmlentities() / htmlspecialchars() ENT_DISALLOWED charset variation
  3. --FILE--
  4. <?php
  5. $tests = array(
  6. 0x00, //C0
  7. 0x01,
  8. 0x09,
  9. 0x0A,
  10. 0x0B,
  11. 0x0C,
  12. 0x0D,
  13. 0x0E,
  14. 0x1F,
  15. 0x20, //allowed always
  16. 0x7F, //DEL
  17. 0x80, //C1
  18. 0x9F,
  19. 0xA0, //allowed always
  20. );
  21. function test($flag, $charset) {
  22. global $tests;
  23. $i = -1;
  24. error_reporting(-1 & ~E_STRICT);
  25. foreach ($tests as $test) {
  26. $test = chr($test);
  27. $i++;
  28. $a = htmlentities($test, $flag | ENT_DISALLOWED, $charset);
  29. $b = htmlspecialchars($test, $flag | ENT_DISALLOWED, $charset);
  30. if ($a == "" && $b == "") { echo sprintf("%05X", $tests[$i]), ": INVALID SEQUENCE\n"; continue; }
  31. echo sprintf("%05X", $tests[$i]), ": ", bin2hex($a), " ", bin2hex($b), "\n";
  32. }
  33. error_reporting(-1);
  34. }
  35. echo "*** Testing HTML 4.01/Windows-1251 ***\n";
  36. test(ENT_HTML401, "Windows-1251");
  37. echo "\n*** Testing XHTML 1.0/Windows-1251 ***\n";
  38. test(ENT_XHTML, "Windows-1251");
  39. echo "\n*** Testing HTML 5/Windows-1251 ***\n";
  40. test(ENT_HTML5, "Windows-1251");
  41. echo "\n*** Testing XML 1.0/Windows-1251 ***\n";
  42. test(ENT_XML1, "Windows-1251");
  43. echo "\n*** Testing HTML 4.01/SJIS ***\n";
  44. test(ENT_HTML401, "SJIS");
  45. echo "\n*** Testing XHTML 1.0/SJIS ***\n";
  46. test(ENT_XHTML, "SJIS");
  47. echo "\n*** Testing HTML 5/SJIS ***\n";
  48. test(ENT_HTML5, "SJIS");
  49. echo "\n*** Testing XML 1.0/SJIS ***\n";
  50. test(ENT_XML1, "SJIS");
  51. ?>
  52. --EXPECT--
  53. *** Testing HTML 4.01/Windows-1251 ***
  54. 00000: 262378464646443b 262378464646443b
  55. 00001: 262378464646443b 262378464646443b
  56. 00009: 09 09
  57. 0000A: 0a 0a
  58. 0000B: 262378464646443b 262378464646443b
  59. 0000C: 262378464646443b 262378464646443b
  60. 0000D: 0d 0d
  61. 0000E: 262378464646443b 262378464646443b
  62. 0001F: 262378464646443b 262378464646443b
  63. 00020: 20 20
  64. 0007F: 262378464646443b 7f
  65. 00080: 80 80
  66. 0009F: 9f 9f
  67. 000A0: 266e6273703b a0
  68. *** Testing XHTML 1.0/Windows-1251 ***
  69. 00000: 262378464646443b 262378464646443b
  70. 00001: 262378464646443b 262378464646443b
  71. 00009: 09 09
  72. 0000A: 0a 0a
  73. 0000B: 262378464646443b 262378464646443b
  74. 0000C: 262378464646443b 262378464646443b
  75. 0000D: 0d 0d
  76. 0000E: 262378464646443b 262378464646443b
  77. 0001F: 262378464646443b 262378464646443b
  78. 00020: 20 20
  79. 0007F: 7f 7f
  80. 00080: 80 80
  81. 0009F: 9f 9f
  82. 000A0: 266e6273703b a0
  83. *** Testing HTML 5/Windows-1251 ***
  84. 00000: 262378464646443b 262378464646443b
  85. 00001: 262378464646443b 262378464646443b
  86. 00009: 265461623b 09
  87. 0000A: 264e65774c696e653b 0a
  88. 0000B: 262378464646443b 262378464646443b
  89. 0000C: 0c 0c
  90. 0000D: 0d 0d
  91. 0000E: 262378464646443b 262378464646443b
  92. 0001F: 262378464646443b 262378464646443b
  93. 00020: 20 20
  94. 0007F: 262378464646443b 7f
  95. 00080: 26444a63793b 80
  96. 0009F: 26647a63793b 9f
  97. 000A0: 266e6273703b a0
  98. *** Testing XML 1.0/Windows-1251 ***
  99. 00000: 262378464646443b 262378464646443b
  100. 00001: 262378464646443b 262378464646443b
  101. 00009: 09 09
  102. 0000A: 0a 0a
  103. 0000B: 262378464646443b 262378464646443b
  104. 0000C: 262378464646443b 262378464646443b
  105. 0000D: 0d 0d
  106. 0000E: 262378464646443b 262378464646443b
  107. 0001F: 262378464646443b 262378464646443b
  108. 00020: 20 20
  109. 0007F: 7f 7f
  110. 00080: 80 80
  111. 0009F: 9f 9f
  112. 000A0: a0 a0
  113. *** Testing HTML 4.01/SJIS ***
  114. 00000: 262378464646443b 262378464646443b
  115. 00001: 262378464646443b 262378464646443b
  116. 00009: 09 09
  117. 0000A: 0a 0a
  118. 0000B: 262378464646443b 262378464646443b
  119. 0000C: 262378464646443b 262378464646443b
  120. 0000D: 0d 0d
  121. 0000E: 262378464646443b 262378464646443b
  122. 0001F: 262378464646443b 262378464646443b
  123. 00020: 20 20
  124. 0007F: 7f 7f
  125. 00080: INVALID SEQUENCE
  126. 0009F: INVALID SEQUENCE
  127. 000A0: INVALID SEQUENCE
  128. *** Testing XHTML 1.0/SJIS ***
  129. 00000: 262378464646443b 262378464646443b
  130. 00001: 262378464646443b 262378464646443b
  131. 00009: 09 09
  132. 0000A: 0a 0a
  133. 0000B: 262378464646443b 262378464646443b
  134. 0000C: 262378464646443b 262378464646443b
  135. 0000D: 0d 0d
  136. 0000E: 262378464646443b 262378464646443b
  137. 0001F: 262378464646443b 262378464646443b
  138. 00020: 20 20
  139. 0007F: 7f 7f
  140. 00080: INVALID SEQUENCE
  141. 0009F: INVALID SEQUENCE
  142. 000A0: INVALID SEQUENCE
  143. *** Testing HTML 5/SJIS ***
  144. 00000: 262378464646443b 262378464646443b
  145. 00001: 262378464646443b 262378464646443b
  146. 00009: 09 09
  147. 0000A: 0a 0a
  148. 0000B: 262378464646443b 262378464646443b
  149. 0000C: 0c 0c
  150. 0000D: 0d 0d
  151. 0000E: 262378464646443b 262378464646443b
  152. 0001F: 262378464646443b 262378464646443b
  153. 00020: 20 20
  154. 0007F: 7f 7f
  155. 00080: INVALID SEQUENCE
  156. 0009F: INVALID SEQUENCE
  157. 000A0: INVALID SEQUENCE
  158. *** Testing XML 1.0/SJIS ***
  159. 00000: 262378464646443b 262378464646443b
  160. 00001: 262378464646443b 262378464646443b
  161. 00009: 09 09
  162. 0000A: 0a 0a
  163. 0000B: 262378464646443b 262378464646443b
  164. 0000C: 262378464646443b 262378464646443b
  165. 0000D: 0d 0d
  166. 0000E: 262378464646443b 262378464646443b
  167. 0001F: 262378464646443b 262378464646443b
  168. 00020: 20 20
  169. 0007F: 7f 7f
  170. 00080: INVALID SEQUENCE
  171. 0009F: INVALID SEQUENCE
  172. 000A0: INVALID SEQUENCE