Skip to content

Commit 77ee200

Browse files
committed
Fix bug #64011 (get_html_translation_table())
get_html_translation_table() with encoding ISO-8859-1 and HTMLENTITIES was broken. Only entities for characters U+0000 to U+0040 were being included in the result.
1 parent 94a4e0f commit 77ee200

File tree

2 files changed

+123
-2
lines changed

2 files changed

+123
-2
lines changed

ext/standard/html.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,8 +1628,8 @@ PHP_FUNCTION(get_html_translation_table)
16281628
unsigned i, j, k,
16291629
max_i, max_j, max_k;
16301630
/* no mapping to unicode required */
1631-
if (CHARSET_SINGLE_BYTE(charset)) {
1632-
max_i = 1; max_j = 1; max_k = 64;
1631+
if (CHARSET_SINGLE_BYTE(charset)) { /* ISO-8859-1 */
1632+
max_i = 1; max_j = 4; max_k = 64;
16331633
} else {
16341634
max_i = 0x1E; max_j = 64; max_k = 64;
16351635
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
--TEST--
2+
Test get_html_translation_table() function: htmlentities/HTML 4/ISO-8859-1 (bug #64011)
3+
--FILE--
4+
<?php
5+
6+
function so($a,$b) { return ord($a) - ord($b); }
7+
8+
$table = HTML_ENTITIES;
9+
$tt = get_html_translation_table($table, ENT_COMPAT, "ISO-8859-1");
10+
uksort( $tt, 'so' );
11+
var_dump( count($tt) );
12+
print_r( $tt );
13+
echo "Done\n";
14+
15+
?>
16+
--EXPECT--
17+
int(100)
18+
Array
19+
(
20+
["] => &quot;
21+
[&] => &amp;
22+
[<] => &lt;
23+
[>] => &gt;
24+
[ ] => &nbsp;
25+
[¡] => &iexcl;
26+
[¢] => &cent;
27+
[£] => &pound;
28+
[¤] => &curren;
29+
[¥] => &yen;
30+
[¦] => &brvbar;
31+
[§] => &sect;
32+
[¨] => &uml;
33+
[©] => &copy;
34+
[ª] => &ordf;
35+
[«] => &laquo;
36+
[¬] => &not;
37+
[­] => &shy;
38+
[®] => &reg;
39+
[¯] => &macr;
40+
[°] => &deg;
41+
[±] => &plusmn;
42+
[²] => &sup2;
43+
[³] => &sup3;
44+
[´] => &acute;
45+
[µ] => &micro;
46+
[¶] => &para;
47+
[·] => &middot;
48+
[¸] => &cedil;
49+
[¹] => &sup1;
50+
[º] => &ordm;
51+
[»] => &raquo;
52+
[¼] => &frac14;
53+
[½] => &frac12;
54+
[¾] => &frac34;
55+
[¿] => &iquest;
56+
[À] => &Agrave;
57+
[Á] => &Aacute;
58+
[Â] => &Acirc;
59+
[Ã] => &Atilde;
60+
[Ä] => &Auml;
61+
[Å] => &Aring;
62+
[Æ] => &AElig;
63+
[Ç] => &Ccedil;
64+
[È] => &Egrave;
65+
[É] => &Eacute;
66+
[Ê] => &Ecirc;
67+
[Ë] => &Euml;
68+
[Ì] => &Igrave;
69+
[Í] => &Iacute;
70+
[Î] => &Icirc;
71+
[Ï] => &Iuml;
72+
[Ð] => &ETH;
73+
[Ñ] => &Ntilde;
74+
[Ò] => &Ograve;
75+
[Ó] => &Oacute;
76+
[Ô] => &Ocirc;
77+
[Õ] => &Otilde;
78+
[Ö] => &Ouml;
79+
[×] => &times;
80+
[Ø] => &Oslash;
81+
[Ù] => &Ugrave;
82+
[Ú] => &Uacute;
83+
[Û] => &Ucirc;
84+
[Ü] => &Uuml;
85+
[Ý] => &Yacute;
86+
[Þ] => &THORN;
87+
[ß] => &szlig;
88+
[à] => &agrave;
89+
[á] => &aacute;
90+
[â] => &acirc;
91+
[ã] => &atilde;
92+
[ä] => &auml;
93+
[å] => &aring;
94+
[æ] => &aelig;
95+
[ç] => &ccedil;
96+
[è] => &egrave;
97+
[é] => &eacute;
98+
[ê] => &ecirc;
99+
[ë] => &euml;
100+
[ì] => &igrave;
101+
[í] => &iacute;
102+
[î] => &icirc;
103+
[ï] => &iuml;
104+
[ð] => &eth;
105+
[ñ] => &ntilde;
106+
[ò] => &ograve;
107+
[ó] => &oacute;
108+
[ô] => &ocirc;
109+
[õ] => &otilde;
110+
[ö] => &ouml;
111+
[÷] => &divide;
112+
[ø] => &oslash;
113+
[ù] => &ugrave;
114+
[ú] => &uacute;
115+
[û] => &ucirc;
116+
[ü] => &uuml;
117+
[ý] => &yacute;
118+
[þ] => &thorn;
119+
[ÿ] => &yuml;
120+
)
121+
Done

0 commit comments

Comments
 (0)