php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /php-7.1.11/ext/standard/tests/strings/ |
files >> //php-7.1.11/ext/standard/tests/strings/htmlentities-utf-3.phpt |
--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(0x00, 0x7F)), array(array(0xC2, 0xDF), array(0x80, 0xBF)), array(array(0xE0, 0xE0), array(0xA0, 0xBF), array(0x80, 0xBF)), array(array(0xE1, 0xEC), array(0x80, 0xBF), array(0x80, 0xBF)), array(array(0xED, 0xED), array(0x80, 0x9F), array(0x80, 0xBF)), array(array(0xEE, 0xEF), array(0x80, 0xBF), array(0x80, 0xBF)), array(array(0xF0, 0xF0), array(0x90, 0xBF), array(0x80, 0xBF), array(0x80, 0xBF)), array(array(0xF1, 0xF3), array(0x80, 0xBF), array(0x80, 0xBF), array(0x80, 0xBF)), array(array(0xF4, 0xF4), array(0x80, 0x8F), array(0x80, 0xBF), array(0x80, 0xBF)), ); 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($s, ENT_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.y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`