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.
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;
}
--- /dev/null
+--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
+(
+ ["] => "
+ [&] => &
+ [<] => <
+ [>] => >
+ [ ] =>
+ [¡] => ¡
+ [¢] => ¢
+ [£] => £
+ [¤] => ¤
+ [¥] => ¥
+ [¦] => ¦
+ [§] => §
+ [¨] => ¨
+ [©] => ©
+ [ª] => ª
+ [«] => «
+ [¬] => ¬
+ [] => ­
+ [®] => ®
+ [¯] => ¯
+ [°] => °
+ [±] => ±
+ [²] => ²
+ [³] => ³
+ [´] => ´
+ [µ] => µ
+ [¶] => ¶
+ [·] => ·
+ [¸] => ¸
+ [¹] => ¹
+ [º] => º
+ [»] => »
+ [¼] => ¼
+ [½] => ½
+ [¾] => ¾
+ [¿] => ¿
+ [À] => À
+ [Á] => Á
+ [Â] => Â
+ [Ã] => Ã
+ [Ä] => Ä
+ [Å] => Å
+ [Æ] => Æ
+ [Ç] => Ç
+ [È] => È
+ [É] => É
+ [Ê] => Ê
+ [Ë] => Ë
+ [Ì] => Ì
+ [Í] => Í
+ [Î] => Î
+ [Ï] => Ï
+ [Ð] => Ð
+ [Ñ] => Ñ
+ [Ò] => Ò
+ [Ó] => Ó
+ [Ô] => Ô
+ [Õ] => Õ
+ [Ö] => Ö
+ [×] => ×
+ [Ø] => Ø
+ [Ù] => Ù
+ [Ú] => Ú
+ [Û] => Û
+ [Ü] => Ü
+ [Ý] => Ý
+ [Þ] => Þ
+ [ß] => ß
+ [à] => à
+ [á] => á
+ [â] => â
+ [ã] => ã
+ [ä] => ä
+ [å] => å
+ [æ] => æ
+ [ç] => ç
+ [è] => è
+ [é] => é
+ [ê] => ê
+ [ë] => ë
+ [ì] => ì
+ [í] => í
+ [î] => î
+ [ï] => ï
+ [ð] => ð
+ [ñ] => ñ
+ [ò] => ò
+ [ó] => ó
+ [ô] => ô
+ [õ] => õ
+ [ö] => ö
+ [÷] => ÷
+ [ø] => ø
+ [ù] => ù
+ [ú] => ú
+ [û] => û
+ [ü] => ü
+ [ý] => ý
+ [þ] => þ
+ [ÿ] => ÿ
+)
+Done