Annotation of embedaddon/php/ext/standard/tests/strings/htmlentities20.phpt, revision 1.1.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>