--TEST--
Test get_next_char(), used by htmlentities()/htmlspecialchars(): validity of UTF-8 sequences
--FILE--
<?php

/* conformance to Unicode 5.2, section 3.9, D92 */

$val_ranges = array(
    array(array(
0x000x7F)),
    array(array(
0xC20xDF), array(0x800xBF)),
    array(array(
0xE00xE0), array(0xA00xBF), array(0x800xBF)),
    array(array(
0xE10xEC), array(0x800xBF), array(0x800xBF)),
    array(array(
0xED0xED), array(0x800x9F), array(0x800xBF)),
    array(array(
0xEE0xEF), array(0x800xBF), array(0x800xBF)),
    array(array(
0xF00xF0), array(0x900xBF), array(0x800xBF), array(0x800xBF)),
    array(array(
0xF10xF3), array(0x800xBF), array(0x800xBF), array(0x800xBF)),
    array(array(
0xF40xF4), array(0x800x8F), array(0x800xBF), array(0x800xBF)),
);

function 
is_valid($seq) {
    global 
$val_ranges;
    
$b ord($seq[0]);
    foreach (
$val_ranges as $l) {
        if (
$b >= $l[0][0] && $b <= $l[0][1]) {
            if (
count($l) != strlen($seq)) {
                return 
false;
            }
            for (
$n 1$n strlen($seq); $n++) {
                if (
ord($seq[$n]) < $l[$n][0] || ord($seq[$n]) > $l[$n][1]) {
                    return 
false;
                }
            }
            return 
true;
        }
    }
    return 
false;
}

function 
concordance($s) {
    
$vhe strlen(htmlspecialchars($sENT_QUOTES"UTF-8")) > 0;
    
$v is_valid($s);
    return (
$vhe === $v);
}

for (
$b1 0xC0$b1 0xE0$b1++) {
    for (
$b2 0x80$b2 0xBF$b2++) {
        
$s chr($b1).chr($b2);
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
    }
}


for (
$b1 0xE0$b1 0xEF$b1++) {
    for (
$b2 0x80$b2 0xBF$b2++) {
        
$s chr($b1).chr($b2)."\x80";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
        
$s chr($b1).chr($b2)."\xBF";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
    }
}

for (
$b1 0xF0$b1 0xFF$b1++) {
    for (
$b2 0x80$b2 0xBF$b2++) {
        
$s chr($b1).chr($b2)."\x80\x80";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
        
$s chr($b1).chr($b2)."\xBF\x80";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
        
$s chr($b1).chr($b2)."\x80\xBF";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
        
$s chr($b1).chr($b2)."\xBF\xBF";
        if (!
concordance($s))
            echo 
"Discordance for ".bin2hex($s),"\n";
    }
}
echo 
"Done.\n";
--
EXPECT--
Done.