--TEST--
htmlentities() conformance check (HTML 4)
--FILE--
<?php
function utf32_utf8($k) {
    if (
$k 0x80) {
        
$retval pack('C'$k);
    } else if (
$k 0x800) {
        
$retval pack('C2'
            
0xc0 | ($k >> 6),
            
0x80 | ($k 0x3f));
    } else if (
$k 0x10000) {
        
$retval pack('C3',
            
0xe0 | ($k >> 12),
            
0x80 | (($k >> 6) & 0x3f),
            
0x80 | ($k 0x3f));
    } else if (
$k 0x200000) {
        
$retval pack('C4',
            
0xf0 | ($k >> 18),
            
0x80 | (($k >> 12) & 0x3f),
            
0x80 | (($k >> 6) & 0x3f),
            
0x80 | ($k 0x3f));
    } else if (
$k 0x4000000) {
        
$retval pack('C5',
            
0xf8 | ($k >> 24),
            
0x80 | (($k >> 18) & 0x3f),
            
0x80 | (($k >> 12) & 0x3f),
            
0x80 | (($k >> 6) & 0x3f),
            
0x80 | ($k 0x3f));
    } else {
        
$retval pack('C6',
            
0xfc | ($k >> 30),
            
0x80 | (($k >> 24) & 0x3f),
            
0x80 | (($k >> 18) & 0x3f),
            
0x80 | (($k >> 12) & 0x3f),
            
0x80 | (($k >> 6) & 0x3f),
            
0x80 | ($k 0x3f));
    }
    return 
$retval;
}

$table get_html_translation_table(HTML_ENTITIESENT_QUOTES'UTF-8');

for (
$i 0$i 0x2710$i++) {
    if (
$i >= 0xd800 && $i 0xe000)
        continue;
    
$str utf32_utf8($i);
    if (isset(
$table[$str])) {
        
printf("%s\tU+%05X\n"$table[$str], $i);
        unset(
$table[$str]);
    }
}

if (!empty(
$table)) {
    echo 
"Not matched entities: ";
    
var_dump($table);
}

?>
--EXPECT--
&quot;    U+00022
&amp;    U+00026
&#039;    U+00027
&lt;    U+0003C
&gt;    U+0003E
&nbsp;    U+000A0
&iexcl;    U+000A1
&cent;    U+000A2
&pound;    U+000A3
&curren;    U+000A4
&yen;    U+000A5
&brvbar;    U+000A6
&sect;    U+000A7
&uml;    U+000A8
&copy;    U+000A9
&ordf;    U+000AA
&laquo;    U+000AB
&not;    U+000AC
&shy;    U+000AD
&reg;    U+000AE
&macr;    U+000AF
&deg;    U+000B0
&plusmn;    U+000B1
&sup2;    U+000B2
&sup3;    U+000B3
&acute;    U+000B4
&micro;    U+000B5
&para;    U+000B6
&middot;    U+000B7
&cedil;    U+000B8
&sup1;    U+000B9
&ordm;    U+000BA
&raquo;    U+000BB
&frac14;    U+000BC
&frac12;    U+000BD
&frac34;    U+000BE
&iquest;    U+000BF
&Agrave;    U+000C0
&Aacute;    U+000C1
&Acirc;    U+000C2
&Atilde;    U+000C3
&Auml;    U+000C4
&Aring;    U+000C5
&AElig;    U+000C6
&Ccedil;    U+000C7
&Egrave;    U+000C8
&Eacute;    U+000C9
&Ecirc;    U+000CA
&Euml;    U+000CB
&Igrave;    U+000CC
&Iacute;    U+000CD
&Icirc;    U+000CE
&Iuml;    U+000CF
&ETH;    U+000D0
&Ntilde;    U+000D1
&Ograve;    U+000D2
&Oacute;    U+000D3
&Ocirc;    U+000D4
&Otilde;    U+000D5
&Ouml;    U+000D6
&times;    U+000D7
&Oslash;    U+000D8
&Ugrave;    U+000D9
&Uacute;    U+000DA
&Ucirc;    U+000DB
&Uuml;    U+000DC
&Yacute;    U+000DD
&THORN;    U+000DE
&szlig;    U+000DF
&agrave;    U+000E0
&aacute;    U+000E1
&acirc;    U+000E2
&atilde;    U+000E3
&auml;    U+000E4
&aring;    U+000E5
&aelig;    U+000E6
&ccedil;    U+000E7
&egrave;    U+000E8
&eacute;    U+000E9
&ecirc;    U+000EA
&euml;    U+000EB
&igrave;    U+000EC
&iacute;    U+000ED
&icirc;    U+000EE
&iuml;    U+000EF
&eth;    U+000F0
&ntilde;    U+000F1
&ograve;    U+000F2
&oacute;    U+000F3
&ocirc;    U+000F4
&otilde;    U+000F5
&ouml;    U+000F6
&divide;    U+000F7
&oslash;    U+000F8
&ugrave;    U+000F9
&uacute;    U+000FA
&ucirc;    U+000FB
&uuml;    U+000FC
&yacute;    U+000FD
&thorn;    U+000FE
&yuml;    U+000FF
&OElig;    U+00152
&oelig;    U+00153
&Scaron;    U+00160
&scaron;    U+00161
&Yuml;    U+00178
&fnof;    U+00192
&circ;    U+002C6
&tilde;    U+002DC
&Alpha;    U+00391
&Beta;    U+00392
&Gamma;    U+00393
&Delta;    U+00394
&Epsilon;    U+00395
&Zeta;    U+00396
&Eta;    U+00397
&Theta;    U+00398
&Iota;    U+00399
&Kappa;    U+0039A
&Lambda;    U+0039B
&Mu;    U+0039C
&Nu;    U+0039D
&Xi;    U+0039E
&Omicron;    U+0039F
&Pi;    U+003A0
&Rho;    U+003A1
&Sigma;    U+003A3
&Tau;    U+003A4
&Upsilon;    U+003A5
&Phi;    U+003A6
&Chi;    U+003A7
&Psi;    U+003A8
&Omega;    U+003A9
&alpha;    U+003B1
&beta;    U+003B2
&gamma;    U+003B3
&delta;    U+003B4
&epsilon;    U+003B5
&zeta;    U+003B6
&eta;    U+003B7
&theta;    U+003B8
&iota;    U+003B9
&kappa;    U+003BA
&lambda;    U+003BB
&mu;    U+003BC
&nu;    U+003BD
&xi;    U+003BE
&omicron;    U+003BF
&pi;    U+003C0
&rho;    U+003C1
&sigmaf;    U+003C2
&sigma;    U+003C3
&tau;    U+003C4
&upsilon;    U+003C5
&phi;    U+003C6
&chi;    U+003C7
&psi;    U+003C8
&omega;    U+003C9
&thetasym;    U+003D1
&upsih;    U+003D2
&piv;    U+003D6
&ensp;    U+02002
&emsp;    U+02003
&thinsp;    U+02009
&zwnj;    U+0200C
&zwj;    U+0200D
&lrm;    U+0200E
&rlm;    U+0200F
&ndash;    U+02013
&mdash;    U+02014
&lsquo;    U+02018
&rsquo;    U+02019
&sbquo;    U+0201A
&ldquo;    U+0201C
&rdquo;    U+0201D
&bdquo;    U+0201E
&dagger;    U+02020
&Dagger;    U+02021
&bull;    U+02022
&hellip;    U+02026
&permil;    U+02030
&prime;    U+02032
&Prime;    U+02033
&lsaquo;    U+02039
&rsaquo;    U+0203A
&oline;    U+0203E
&frasl;    U+02044
&euro;    U+020AC
&image;    U+02111
&weierp;    U+02118
&real;    U+0211C
&trade;    U+02122
&alefsym;    U+02135
&larr;    U+02190
&uarr;    U+02191
&rarr;    U+02192
&darr;    U+02193
&harr;    U+02194
&crarr;    U+021B5
&lArr;    U+021D0
&uArr;    U+021D1
&rArr;    U+021D2
&dArr;    U+021D3
&hArr;    U+021D4
&forall;    U+02200
&part;    U+02202
&exist;    U+02203
&empty;    U+02205
&nabla;    U+02207
&isin;    U+02208
&notin;    U+02209
&ni;    U+0220B
&prod;    U+0220F
&sum;    U+02211
&minus;    U+02212
&lowast;    U+02217
&radic;    U+0221A
&prop;    U+0221D
&infin;    U+0221E
&ang;    U+02220
&and;    U+02227
&or;    U+02228
&cap;    U+02229
&cup;    U+0222A
&int;    U+0222B
&there4;    U+02234
&sim;    U+0223C
&cong;    U+02245
&asymp;    U+02248
&ne;    U+02260
&equiv;    U+02261
&le;    U+02264
&ge;    U+02265
&sub;    U+02282
&sup;    U+02283
&nsub;    U+02284
&sube;    U+02286
&supe;    U+02287
&oplus;    U+02295
&otimes;    U+02297
&perp;    U+022A5
&sdot;    U+022C5
&lceil;    U+02308
&rceil;    U+02309
&lfloor;    U+0230A
&rfloor;    U+0230B
&lang;    U+02329
&rang;    U+0232A
&loz;    U+025CA
&spades;    U+02660
&clubs;    U+02663
&hearts;    U+02665
&diams;    U+02666