mirror of
https://github.com/php/php-src.git
synced 2025-01-24 20:53:37 +08:00
- Fix htmlentities() / html_decode_entity() UTF-8 related bugs
initially reported by Kamesh Jayachandran
This commit is contained in:
parent
357b0c34b6
commit
ee18958f98
@ -232,38 +232,37 @@ static entity_table_t ent_uni_8592_9002[] = {
|
||||
NULL, NULL, "pr", "sc", "cupre", "sscue", "prsim", "scsim",
|
||||
/* 8832 (0x2280) */
|
||||
"npr", "nsc", "sub", "sup", "nsub", "nsup", "sube", "supe",
|
||||
/* 8840 - 8852 */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8853 */
|
||||
"oplus", NULL, "otimes",
|
||||
/* 8856 - 8868 */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8869 */
|
||||
"perp",
|
||||
/* 8870 - 8901 */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL,
|
||||
/* 8901 */
|
||||
"sdot",
|
||||
/* 8902 - 8967 */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8968 */
|
||||
"lceil", "rceil", "lfloor", "rfloor",
|
||||
/* 8969 - 9000 */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL,
|
||||
/* 9001 */
|
||||
"lang", "rang",
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8848 (0x2290) */
|
||||
NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes",
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8864 (0x22a0) */
|
||||
NULL, NULL, NULL, NULL, NULL, "perp", NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8880 (0x22b0) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8896 (0x22c0) */
|
||||
NULL, NULL, NULL, NULL, NULL, "sdot", NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8912 (0x22d0) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8928 (0x22e0) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8944 (0x22f0) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8960 (0x2300) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
"lceil", "rceil", "lfloor", "rfloor", NULL, NULL, NULL, NULL,
|
||||
/* 8976 (0x2310) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
/* 8992 (0x2320) */
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||
NULL, "lang", "rang"
|
||||
};
|
||||
|
||||
static entity_table_t ent_uni_9674[] = {
|
||||
@ -398,7 +397,7 @@ static const struct html_entity_map entity_map[] = {
|
||||
{ cs_8859_15, 0xa0, 0xff, ent_iso_8859_15 },
|
||||
{ cs_utf_8, 0xa0, 0xff, ent_iso_8859_1 },
|
||||
{ cs_utf_8, 338, 402, ent_uni_338_402 },
|
||||
{ cs_utf_8, 710, 732, ent_uni_spacing },
|
||||
{ cs_utf_8, 710, 731, ent_uni_spacing },
|
||||
{ cs_utf_8, 913, 982, ent_uni_greek },
|
||||
{ cs_utf_8, 8194, 8260, ent_uni_punct },
|
||||
{ cs_utf_8, 8364, 8364, ent_uni_euro },
|
||||
|
50
ext/standard/tests/strings/htmlentities17.phpt
Normal file
50
ext/standard/tests/strings/htmlentities17.phpt
Normal file
@ -0,0 +1,50 @@
|
||||
--TEST--
|
||||
htmlentities() / html_entity_decode() #8592 - #9002 table test
|
||||
--FILE--
|
||||
<?php
|
||||
$tests = array(
|
||||
array(8768, '≀', "e28980"),
|
||||
array(8853, '⊕', "e28a95"),
|
||||
array(8855, '⊗', "e28a97"),
|
||||
array(8869, '⊥', "e28aa5"),
|
||||
array(8901, '⋅', "e28b85"),
|
||||
array(8968, '⌈', "e28c88"),
|
||||
array(8969, '⌉', "e28c89"),
|
||||
array(8970, '⌊', "e28c8a"),
|
||||
array(8971, '⌋', "e28c8b"),
|
||||
array(9001, '⟨', "e28ca9"),
|
||||
array(9002, '⟩', "e28caa")
|
||||
);
|
||||
|
||||
foreach ($tests as $test) {
|
||||
var_dump(htmlentities(pack('H*', $test[2]), ENT_QUOTES, 'UTF-8'));
|
||||
}
|
||||
|
||||
foreach ($tests as $test) {
|
||||
list(,$result) = unpack('H6', html_entity_decode($test[1], ENT_QUOTES, 'UTF-8'));
|
||||
var_dump($result);
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
string(8) "≀"
|
||||
string(7) "⊕"
|
||||
string(8) "⊗"
|
||||
string(6) "⊥"
|
||||
string(6) "⋅"
|
||||
string(7) "⌈"
|
||||
string(7) "⌉"
|
||||
string(8) "⌊"
|
||||
string(8) "⌋"
|
||||
string(6) "⟨"
|
||||
string(6) "⟩"
|
||||
string(6) "e28980"
|
||||
string(6) "e28a95"
|
||||
string(6) "e28a97"
|
||||
string(6) "e28aa5"
|
||||
string(6) "e28b85"
|
||||
string(6) "e28c88"
|
||||
string(6) "e28c89"
|
||||
string(6) "e28c8a"
|
||||
string(6) "e28c8b"
|
||||
string(6) "e28ca9"
|
||||
string(6) "e28caa"
|
Loading…
Reference in New Issue
Block a user