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.
This commit is contained in:
Gustavo Lopes 2013-01-18 12:07:21 +01:00
parent 94a4e0f823
commit 77ee200097
2 changed files with 123 additions and 2 deletions

View File

@ -1628,8 +1628,8 @@ PHP_FUNCTION(get_html_translation_table)
unsigned i, j, k,
max_i, max_j, max_k;
/* no mapping to unicode required */
if (CHARSET_SINGLE_BYTE(charset)) {
max_i = 1; max_j = 1; max_k = 64;
if (CHARSET_SINGLE_BYTE(charset)) { /* ISO-8859-1 */
max_i = 1; max_j = 4; max_k = 64;
} else {
max_i = 0x1E; max_j = 64; max_k = 64;
}

View File

@ -0,0 +1,121 @@
--TEST--
Test get_html_translation_table() function: htmlentities/HTML 4/ISO-8859-1 (bug #64011)
--FILE--
<?php
function so($a,$b) { return ord($a) - ord($b); }
$table = HTML_ENTITIES;
$tt = get_html_translation_table($table, ENT_COMPAT, "ISO-8859-1");
uksort( $tt, 'so' );
var_dump( count($tt) );
print_r( $tt );
echo "Done\n";
?>
--EXPECT--
int(100)
Array
(
["] => &quot;
[&] => &amp;
[<] => &lt;
[>] => &gt;
[ ] => &nbsp;
[¡] => &iexcl;
[¢] => &cent;
[£] => &pound;
[¤] => &curren;
[¥] => &yen;
[¦] => &brvbar;
[§] => &sect;
[¨] => &uml;
[©] => &copy;
[ª] => &ordf;
[«] => &laquo;
[¬] => &not;
[­] => &shy;
[®] => &reg;
[¯] => &macr;
[°] => &deg;
[±] => &plusmn;
[²] => &sup2;
[³] => &sup3;
[´] => &acute;
[µ] => &micro;
[¶] => &para;
[·] => &middot;
[¸] => &cedil;
[¹] => &sup1;
[º] => &ordm;
[»] => &raquo;
[¼] => &frac14;
[½] => &frac12;
[¾] => &frac34;
[¿] => &iquest;
[À] => &Agrave;
[Á] => &Aacute;
[Â] => &Acirc;
[Ã] => &Atilde;
[Ä] => &Auml;
[Å] => &Aring;
[Æ] => &AElig;
[Ç] => &Ccedil;
[È] => &Egrave;
[É] => &Eacute;
[Ê] => &Ecirc;
[Ë] => &Euml;
[Ì] => &Igrave;
[Í] => &Iacute;
[Î] => &Icirc;
[Ï] => &Iuml;
[Ð] => &ETH;
[Ñ] => &Ntilde;
[Ò] => &Ograve;
[Ó] => &Oacute;
[Ô] => &Ocirc;
[Õ] => &Otilde;
[Ö] => &Ouml;
[×] => &times;
[Ø] => &Oslash;
[Ù] => &Ugrave;
[Ú] => &Uacute;
[Û] => &Ucirc;
[Ü] => &Uuml;
[Ý] => &Yacute;
[Þ] => &THORN;
[ß] => &szlig;
[à] => &agrave;
[á] => &aacute;
[â] => &acirc;
[ã] => &atilde;
[ä] => &auml;
[å] => &aring;
[æ] => &aelig;
[ç] => &ccedil;
[è] => &egrave;
[é] => &eacute;
[ê] => &ecirc;
[ë] => &euml;
[ì] => &igrave;
[í] => &iacute;
[î] => &icirc;
[ï] => &iuml;
[ð] => &eth;
[ñ] => &ntilde;
[ò] => &ograve;
[ó] => &oacute;
[ô] => &ocirc;
[õ] => &otilde;
[ö] => &ouml;
[÷] => &divide;
[ø] => &oslash;
[ù] => &ugrave;
[ú] => &uacute;
[û] => &ucirc;
[ü] => &uuml;
[ý] => &yacute;
[þ] => &thorn;
[ÿ] => &yuml;
)
Done