Annotation of embedaddon/php/ext/standard/tests/strings/htmlentities20.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: htmlentities() / htmlspecialchars() ENT_DISALLOWED
! 3: --FILE--
! 4: <?php
! 5: function codepoint_to_utf8($k) {
! 6: if ($k < 0x80) {
! 7: $retval = pack('C', $k);
! 8: } else if ($k < 0x800) {
! 9: $retval = pack('C2',
! 10: 0xc0 | ($k >> 6),
! 11: 0x80 | ($k & 0x3f));
! 12: } else if ($k < 0x10000) {
! 13: $retval = pack('C3',
! 14: 0xe0 | ($k >> 12),
! 15: 0x80 | (($k >> 6) & 0x3f),
! 16: 0x80 | ($k & 0x3f));
! 17: } else {
! 18: $retval = pack('C4',
! 19: 0xf0 | ($k >> 18),
! 20: 0x80 | (($k >> 12) & 0x3f),
! 21: 0x80 | (($k >> 6) & 0x3f),
! 22: 0x80 | ($k & 0x3f));
! 23: }
! 24: return $retval;
! 25: }
! 26:
! 27: $tests = array(
! 28: 0x00, //C0
! 29: 0x01,
! 30: 0x09,
! 31: 0x0A,
! 32: 0x0B,
! 33: 0x0C,
! 34: 0x0D,
! 35: 0x0E,
! 36: 0x1F,
! 37: 0x20, //allowed always
! 38: 0x7F, //DEL
! 39: 0x80, //C1
! 40: 0x9F,
! 41: 0xA0, //allowed always
! 42: 0xD7FF, //surrogates
! 43: 0xD800,
! 44: 0xDFFF,
! 45: 0xE000, //allowed always
! 46: 0xFFFE, //nonchar
! 47: 0xFFFF,
! 48: 0xFDCF, //allowed always
! 49: 0xFDD0, //nonchar
! 50: 0xFDEF,
! 51: 0xFDF0, //allowed always
! 52: 0x2FFFE, //nonchar
! 53: 0x2FFFF,
! 54: );
! 55: $tests2 = array_map('codepoint_to_utf8', $tests);
! 56:
! 57: $subchr = codepoint_to_utf8(0xFFFD);
! 58:
! 59: function test($flag) {
! 60: global $tests, $tests2;
! 61: $i = -1;
! 62: foreach ($tests2 as $test) {
! 63: $i++;
! 64: $a = htmlentities($test, $flag | ENT_DISALLOWED, "UTF-8");
! 65: $b = htmlspecialchars($test, $flag | ENT_DISALLOWED, "UTF-8");
! 66: if ($a == "" && $b == "") { echo sprintf("%05X", $tests[$i]), ": INVALID SEQUENCE\n"; continue; }
! 67: echo sprintf("%05X", $tests[$i]), ": ", bin2hex($a), " ", bin2hex($b), "\n";
! 68: }
! 69: }
! 70:
! 71: echo "*** Testing HTML 4.01 ***\n";
! 72:
! 73: test(ENT_HTML401);
! 74:
! 75: echo "\n*** Testing XHTML 1.0 ***\n";
! 76:
! 77: test(ENT_XHTML);
! 78:
! 79: echo "\n*** Testing HTML 5 ***\n";
! 80:
! 81: test(ENT_HTML5);
! 82:
! 83: echo "\n*** Testing XML 1.0 ***\n";
! 84:
! 85: test(ENT_XML1);
! 86:
! 87: ?>
! 88: --EXPECT--
! 89: *** Testing HTML 4.01 ***
! 90: 00000: efbfbd efbfbd
! 91: 00001: efbfbd efbfbd
! 92: 00009: 09 09
! 93: 0000A: 0a 0a
! 94: 0000B: efbfbd efbfbd
! 95: 0000C: efbfbd efbfbd
! 96: 0000D: 0d 0d
! 97: 0000E: efbfbd efbfbd
! 98: 0001F: efbfbd efbfbd
! 99: 00020: 20 20
! 100: 0007F: efbfbd efbfbd
! 101: 00080: efbfbd efbfbd
! 102: 0009F: efbfbd efbfbd
! 103: 000A0: 266e6273703b c2a0
! 104: 0D7FF: ed9fbf ed9fbf
! 105: 0D800: INVALID SEQUENCE
! 106: 0DFFF: INVALID SEQUENCE
! 107: 0E000: ee8080 ee8080
! 108: 0FFFE: efbfbe efbfbe
! 109: 0FFFF: efbfbf efbfbf
! 110: 0FDCF: efb78f efb78f
! 111: 0FDD0: efb790 efb790
! 112: 0FDEF: efb7af efb7af
! 113: 0FDF0: efb7b0 efb7b0
! 114: 2FFFE: f0afbfbe f0afbfbe
! 115: 2FFFF: f0afbfbf f0afbfbf
! 116:
! 117: *** Testing XHTML 1.0 ***
! 118: 00000: efbfbd efbfbd
! 119: 00001: efbfbd efbfbd
! 120: 00009: 09 09
! 121: 0000A: 0a 0a
! 122: 0000B: efbfbd efbfbd
! 123: 0000C: efbfbd efbfbd
! 124: 0000D: 0d 0d
! 125: 0000E: efbfbd efbfbd
! 126: 0001F: efbfbd efbfbd
! 127: 00020: 20 20
! 128: 0007F: 7f 7f
! 129: 00080: c280 c280
! 130: 0009F: c29f c29f
! 131: 000A0: 266e6273703b c2a0
! 132: 0D7FF: ed9fbf ed9fbf
! 133: 0D800: INVALID SEQUENCE
! 134: 0DFFF: INVALID SEQUENCE
! 135: 0E000: ee8080 ee8080
! 136: 0FFFE: efbfbd efbfbd
! 137: 0FFFF: efbfbd efbfbd
! 138: 0FDCF: efb78f efb78f
! 139: 0FDD0: efb790 efb790
! 140: 0FDEF: efb7af efb7af
! 141: 0FDF0: efb7b0 efb7b0
! 142: 2FFFE: f0afbfbe f0afbfbe
! 143: 2FFFF: f0afbfbf f0afbfbf
! 144:
! 145: *** Testing HTML 5 ***
! 146: 00000: efbfbd efbfbd
! 147: 00001: efbfbd efbfbd
! 148: 00009: 265461623b 09
! 149: 0000A: 264e65774c696e653b 0a
! 150: 0000B: efbfbd efbfbd
! 151: 0000C: 0c 0c
! 152: 0000D: 0d 0d
! 153: 0000E: efbfbd efbfbd
! 154: 0001F: efbfbd efbfbd
! 155: 00020: 20 20
! 156: 0007F: efbfbd efbfbd
! 157: 00080: efbfbd efbfbd
! 158: 0009F: efbfbd efbfbd
! 159: 000A0: 266e6273703b c2a0
! 160: 0D7FF: ed9fbf ed9fbf
! 161: 0D800: INVALID SEQUENCE
! 162: 0DFFF: INVALID SEQUENCE
! 163: 0E000: ee8080 ee8080
! 164: 0FFFE: efbfbd efbfbd
! 165: 0FFFF: efbfbd efbfbd
! 166: 0FDCF: efb78f efb78f
! 167: 0FDD0: efbfbd efbfbd
! 168: 0FDEF: efbfbd efbfbd
! 169: 0FDF0: efb7b0 efb7b0
! 170: 2FFFE: efbfbd efbfbd
! 171: 2FFFF: efbfbd efbfbd
! 172:
! 173: *** Testing XML 1.0 ***
! 174: 00000: efbfbd efbfbd
! 175: 00001: efbfbd efbfbd
! 176: 00009: 09 09
! 177: 0000A: 0a 0a
! 178: 0000B: efbfbd efbfbd
! 179: 0000C: efbfbd efbfbd
! 180: 0000D: 0d 0d
! 181: 0000E: efbfbd efbfbd
! 182: 0001F: efbfbd efbfbd
! 183: 00020: 20 20
! 184: 0007F: 7f 7f
! 185: 00080: c280 c280
! 186: 0009F: c29f c29f
! 187: 000A0: c2a0 c2a0
! 188: 0D7FF: ed9fbf ed9fbf
! 189: 0D800: INVALID SEQUENCE
! 190: 0DFFF: INVALID SEQUENCE
! 191: 0E000: ee8080 ee8080
! 192: 0FFFE: efbfbd efbfbd
! 193: 0FFFF: efbfbd efbfbd
! 194: 0FDCF: efb78f efb78f
! 195: 0FDD0: efb790 efb790
! 196: 0FDEF: efb7af efb7af
! 197: 0FDF0: efb7b0 efb7b0
! 198: 2FFFE: f0afbfbe f0afbfbe
! 199: 2FFFF: f0afbfbf f0afbfbf
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>